2015-11-10 8 views
11

This Przykład pokazuje, jak używać adnotacji @Input() na komponentach potomnych. Moje pytanie brzmi: w jaki sposób używasz go na głównym komponencie? Na przykład, jeśli zmodyfikować kod na link powyżej:Parametry Angular 2 input na dyrektywie root

@Component({ 
selector: 'app', 
template: ` 
    <bank-account bank-name="RBC" account-id="4747"></bank-account> 
`, 
directives: [BankAccount] 
}) 
class App { 
    @Input() something: string; 
} 

bootstrap(App); 

iw html:

<app something="Test"></app> 

Powyższy przykład nie aktualizuje coś nieruchomości na składniku App.

+1

I zostały chcąc to zrobić również. Dodano błąd na jakiś czas https://github.com/angular/angular/issues/4921 – TGH

Odpowiedz

16

This Tobias Bosch's comment ma odpowiedzieć na pytanie:

Powodem dlaczego to nie działa jest to, że index.html, w którym umieszczasz <app something="Test"></app> nie jest kanciasty komponent. Z tego powodu Angular nie skompiluje tego elementu. A Angular nie odczytuje wartości atrybutów podczas działania, tylko podczas kompilacji, ponieważ w przeciwnym razie uzyskalibyśmy wydajność.

W tej chwili nie można używać parametrów wejściowych w elemencie głównym.

+0

jak przekazać tablicę obiektów z express/jade do komponentu angle2? Chciałem związać w ten sposób i to nie działa. – user2705463

+0

Jeśli ma dekorator @ Component, to jak to nie jest element kątowy? – d512

17

myślę, że nadal może używać:

class App { 
    constructor(elm: ElementRef) { 
     this.something = elm.nativeElement.getAttribute('something'); 
    } 
} 
+0

Działa to doskonale. ElementRef można zaimportować z elementu kątowego 2/rdzenia. –

+0

Dziękuję bardzo. :-) Działa idealnie z wartościami statycznymi! – Patrick

+1

[ElementRef] (https://angular.io/docs/ts/latest/api/core/index/ElementRef-class.html) jest oznaczony etykietą RYZYKO ZABEZPIECZENIA, więc należy zachować ostrożność podczas jej używania. – eagor

Powiązane problemy