2015-11-10 6 views
11

This Beispiel zeigt, wie @Input() Annotation für untergeordnete Komponenten verwendet wird. Meine Frage ist, wie verwenden Sie es auf Root-Komponente? Zum Beispiel, wenn Sie Code auf dem Link ändern oben:Eckige 2 Eingabeparameter für die root-Direktive

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

bootstrap(App); 

Und in html:

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

Das obige Beispiel nie aktualisiert etwas Eigenschaft auf App-Komponente.

+1

Ich habe gefehlt, dies auch zu tun. Einen Fehler hinzugefügt eine Weile zurück https://github.com/angular/angular/issues/4921 – TGH

Antwort

16

This Tobias Bosch's comment hat auf Ihre Frage zu beantworten:

Der Grund, warum dies nicht funktioniert, dass Ihr index.html, in dem Sie die <app something="Test"></app> platzieren ist keine Winkelkomponente ist. Aus diesem Grund wird Angular dieses Element nicht kompilieren. Und Angular liest Attributwerte nicht zur Laufzeit, sondern nur während der Kompilierzeit, da wir sonst einen Performance-Treffer bekommen würden.

In diesem Moment können Sie keine Eingabeparameter für das Wurzelelement verwenden.

+0

Wie man Array von Objekten von Express/Jade an eine angular2 Komponente übergeben? Ich wollte auf diese Weise binden und es funktioniert nicht. – user2705463

+0

Wenn es den @Component Decorator hat, wie ist es nicht eine eckige Komponente? – d512

17

Ich denke, man könnte noch verwenden:

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

Das funktioniert ganz gut. ElementRef kann aus angular2 // core importiert werden. –

+0

Vielen Dank. :-) Funktioniert perfekt mit statischen Werten! – Patrick

+1

[ElementRef] (https://angular.io/docs/ts/latest/api/core/index/ElementRef-class.html) ist mit dem SECURITY RISK-Label gekennzeichnet, also seien Sie vorsichtig damit. – eagor

Verwandte Themen