Я немного смущен.
См. эту простую директиву:
@Directive({
selector: '[myDirective]'
})
export class MyDirective {
private text: string;
private enabled: boolean;
@Input() myDirective:string;
@Input('myText')
set myText(val: string) {
this.text = val;
}
@Input('myEnabled')
set myEnabled(val: boolean) {
this.enabled = val;
}
ngOnInit() {
console.log("myDirective string: " + this.myDirective);
console.log("myText string: " + this.text);
console.log("myEnabled boolean: " + this.enabled);
}
}
если мой html будет выглядеть так:
<div [myDirective]="myDefaultText" [myEnabled]="true" [myText]="abc"></div>
Выход будет:
myDirective string: myDefaultText real value // good
myEnabled boolean: true // good
myText string: undefined // Why?
Если я УДАЛИТЬ [] из myText
:
<div [myDirective]="myDefaultText" [myEnabled]="true" myText="abc"></div>
Выход будет:
myDirective string: myDefaultText real value // good
myEnabled boolean: true // good
myText string: abc // GOOD
Я также могу удалить []
из myEnabled
, и он тоже будет работать.
Итак, вот моя путаница - когда мне нужно использовать квадратные скобки []
, а когда нет, в то время как я хочу, чтобы пользователь, который будет использовать myDirective
, никогда не будет задаваться вопросом, если или нет, я думаю, что квадратные скобки []
всегда должен быть там. Не так ли?