#angular #angular-material #angular-directive
#угловой #угловой материал #угловая директива
Вопрос:
У меня есть Директива, применяемая к Mat-Checkbox
@Directive({ selector: 'mat-checkbox[row-selection]', host: { '(click)': '$event.stopPropagation()', '(change)': 'selectHandler()', '[checked]': 'isSelected()', }, }) export class TableRowSelectionDirectivelt;Tgt; { @Input() row: T; private _selectionModel: SelectionModellt;Tgt;; constructor(private _selectionService: TableSelectionModelServicelt;Tgt;) { this._selectionModel = _selectionService.selectionModel; } selectHandler(): void { this._selectionModel.toggle(this.row); this._selectionService.setSelectedRows(this._selectionModel.selected); } isSelected(): boolean { return this._selectionModel.isSelected(this.row); } }
Вот разметка:
... lt;td mat-cell *matCellDef="let row"gt; lt;mat-checkbox row-selection [row]="row"gt;lt;/mat-checkboxgt; lt;/tdgt; ...
Все работает так, как ожидалось, за исключением [checked]
. Я убедился, что isSelected()
это срабатывает должным образом и возвращает правильное значение ( true
или false
), и когда true
оно возвращается, mat-checkbox
оно никогда не проверяется.
Я также пытался использовать @HostBinding()
безрезультатно. То же поведение, что и при использовании host
метаданных.
Разве это невозможно с помощью a @Directive
? Что я здесь упускаю?