2016-11-02 25 views
5

Tôi muốn thêm thuộc tính vào bộ chọn tùy chỉnh mà tôi tạo trong triển khai thành phần góc 2.Thêm thuộc tính vào Bộ chọn thành phần góc 2

@Component({ 
selector: 'my-node',  // add attributes to this selector 
template: `<div> <ng-content></ng-content> </div>`  
}) 

Vì vậy mà khi tôi làm <my-node> Các dom tạo bộ chọn với những thuộc tính thêm

<my-node flex="25" layout="row">

Tôi không muốn cứng mã những thuộc tính này mỗi khi tôi làm <my-node>. Tôi muốn các thuộc tính đó là một phần của các bộ chọn được xây dựng mẫu.

Something như thế này là những gì Im tìm kiếm nhưng không thấy bất cứ điều gì giống như nó trong api

@Component({ 
selector: 'my-node',  
selectorAttributes: `layout="row"` // generates <my-node layout="row"> 
template: `<div> <ng-content></ng-content> </div>`  
}) 
+1

Bạn đang cố gắng để đạt được? Tại sao không đặt chúng vào phần tử gốc của mẫu? – jonrsharpe

+1

Bạn đã thử @HostBinding chưa? – yurzui

Trả lời

7

Sử dụng host của @Component sở hữu siêu dữ liệu.

@Component({ 
    selector: 'my-node',  // add attributes to this selector 
    template: `<div> <ng-content></ng-content> </div>`, 
    host: { // this is applied to 'my-node' in this case 
     "[class.some-class]": "classProperty", 
     "[attr.some-attr]": "attrProperty", 
    }, 
}) 

Dưới đây là ví dụ plunk. Xem app/app.component.ts

+0

Thêm máy chủ: '[attr] = "componentProp"' lỗi, bạn có thể liên kết đến tài liệu với việc triển khai "lưu trữ:" này không? – ndesign11

+0

xin lỗi, điều này là không chính xác, cập nhật câu trả lời của tôi –

+0

Khá chắc chắn đây là những gì tôi cần nhưng vẫn gặp lỗi. 'Không thể liên kết với 'attr' vì nó không phải là thuộc tính đã biết của 'my-node'.' – ndesign11

5

Một lựa chọn khác là sử dụng HostBinding dectorator

@HostBinding('attr.layout') 
layout = 'row'; 
+0

Điều này làm việc tuyệt vời cho tôi. Tôi nghĩ rằng đó là giải pháp tốt nhất bởi vì bạn có thể đặt nó bên cạnh các biến lớp khác như đầu vào, đầu ra, thông tin thành phần riêng tư/công khai, v.v. Nó cũng cho phép bạn đặt giá trị dự đoán và nhận Typecript để phân tích mã của bạn nếu bạn muốn đánh giá một hàm làm giá trị HostBinding của bạn. – vincecampanale

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