typescript - Binda anpassad direktiv till Observable i Angular2
Jag verkar inte kunna lista ut hur databindning fungerar med anpassade direktiv i Angular2. Låt oss säga att jag har ett anpassat direktiv FoobarDirective som accepterar en @Input som är en Observable:
@Directive({
selector: 'foobar'
})
export class FoobarDirective implements OnInit {
@Input() anObservable: Observable<string[]>;
ngOnInit() {
this.anObservable.subscribe(values => {
console.log(values);
});
}
}
Och en implementerande komponent som denna:
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<h2>{{ message }}</h2>
<div foobar [anObservable]="toBind"></div>
</div>
`,
directives: [FoobarDirective]
})
export class App implements OnInit {
message: string;
toBind: Subject<string[]>;
ngOnInit() {
this.message = 'Angular2 works!';
this.toBind = new Subject<string[]>();
this.toBind.next(['a', 'b', 'c']);
}
}
...men jag får följande fel: Kan inte binda till 'anObservable' eftersom det inte är en känd inbyggd egenskap.
Här är en plunker.
Svar #1
Jag tror att problemet är selektorn i din direktiv:
@Directive({
selector: '[foobar]' // <------
})
export class FoobarDirective implements OnInit {
(...)
}
Eftersom du använder fel selektor, tillämpas inte direktivet så Angular2 vet inget om denna input...
