2016-11-02 22 views
5

Açısal 2 bileşen uygulamasında oluşturduğum özel seçiciye öznitelikleri eklemek istiyorum.Angular 2 Bileşen Seçici için özellikler ekleyin

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

ben <my-node> ne zaman dom bu ekstra nitelikler

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

ile seçici oluşturduğu Bunları niteliklerini sert koduna ben <my-node> yapmak her zaman istemiyorsunuz. Bu özniteliklerin şablon oluşturucuların bir parçası olmasını istiyorum. Böyle

şey Im arayan ancak API

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

kullanmaktır görüyor musunuz? Neden onları şablonun kök öğesine koymuyorsunuz? – jonrsharpe

+1

@HostBinding'i denediniz mi? – yurzui

cevap

7

@Component meta özelliğinin kullanılması host böyle bir şey göremiyorum şeydir.

@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", 
    }, 
}) 

İşte bir örnek plunk. app/app.component.ts

+0

Sunucu ekleme: '[attr] = "componentProp"' hataları, bu "host:" uygulamasıyla dokümanlar arasında bağlantı kurabilir misiniz? – ndesign11

+0

üzgünüm, bu yanlıştı, benim yanıt güncellendi –

+0

Buna ihtiyacım var ama yine de hatalar alıyorum. 'My-node'.' adlı bir özellik olmadığından' attr 'bağlanılamıyor. – ndesign11

5

Başka bir seçenek de başarmak için çalışıyoruz ne HostBinding dectorator

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

Bu benim için harika çalıştı. Bunun en iyi çözüm olduğunu düşünüyorum çünkü bunu girdiler, çıktılar, özel/genel bileşen bilgileri vb. Gibi diğer sınıf değişkenlerine ekleyebiliriz. Ayrıca, değerleri tahmin edilebilir şekilde ayarlamanıza ve kodunuzu analiz etmek için Typescript'e sahip olmanıza olanak tanır. Bir işlevi HostBinding değeriniz olarak değerlendirin. – vincecampanale