2016-05-10 23 views
8

Tôi muốn thêm chỉ thị cho một phần tử từ một chỉ thị khác bằng cách sử dụng thuộc tính máy chủ, nhưng dường như không có cách nào để tham chiếu đến chỉ thị khác.Sử dụng Chỉ thị Angular2 trong máy chủ của Chỉ thị

@Directive({ 
    selector: '[one]', 
    host: { '[two]': '"some-value"' } 
    // How can I reference DirectiveTwo here? 
}) 
export class DirectiveOne { } 

@Directive({ 
    selector: '[two]' 
}) 
export class DirectiveTwo { } 

Khi thực hiện việc này, tôi nhận được lỗi "Không thể liên kết với 'hai' tiêu chuẩn vì không phải là một thuộc tính gốc".

Cách tham chiếu chính xác và sử dụng một chỉ thị này từ chỉ thị khác là gì?

Trả lời

10

Chỉ thị được instantiated bởi Angular cho các bộ chọn khớp với HTML được thêm tĩnh (phần tử, id, thuộc tính, lớp, ...).
Không có cách nào để thực hiện các chỉ thị bằng cách sử dụng thông số host của trang trí @Component() hoặc @Directive(). Cũng không có cách nào để tạo chỉ thị động bằng cách sử dụng ViewContainerRef.createComponent() (trước đây là DynamicComponentLoader)

Nhận tham chiếu đến một chỉ thị khác do Angular khởi tạo vì HTML được thêm tĩnh trên cùng một phần tử được hỗ trợ.

+3

Nếu vậy, thực tiễn tốt nhất để có một Chỉ thị mở rộng hoặc sử dụng chức năng của người khác là gì? Điều này có vẻ như một giới hạn khá đáng kể. –

+0

@YonaAppletree có cùng một câu hỏi. Làm thế nào người ta có thể mở rộng một chức năng chỉ thị với chỉ thị khác? Làm cách nào để sử dụng lại mã trong trường hợp này? –

+0

Tôi nghĩ rằng đây là một chủ đề cho một cập nhật lớn hơn https://github.com/angular/angular/issues/11606 –

Các vấn đề liên quan