У меня есть директива, которая помогает добавлять эффекты переключения к различным элементам.
export class AlloyToggleDirective {
private toggled = false;
@Input('alloyToggled')
@HostBinding('class.alloy-toggled')
get isToggled() { return this.toggled; }
set isToggled(value: boolean) {
this.toggled = value;
this.alloyToggledChange.emit(this.toggled);
}
@Output() alloyToggledChange: EventEmitter<boolean> = new EventEmitter();
toggle() {
this.toggled = !this.toggled;
}
@HostListener('click')
onclick() {
this.toggled = !this.toggled;
this.alloyToggledChange.emit(this.toggled);
}
}
При переключении работает нормально, однако начальное значение привязки игнорируется:
<button [alloyToggled]="booleanValue">
HTML будет отражать это начальное значение, но класс применяется только после переключения программно или с помощью мыши. Есть ли странное взаимодействие, когда @HostBinding
на @Input
?