Я пытаюсь использовать некоторые компоненты Angular Material, такие как mat-checkbox, но когда я устанавливаю пользовательский атрибут, я получаю
Cannot read properties of undefined (reading 'getAttribute')
Используемый код такой, какой он есть:
<li *ngFor="let instancia of tipo_maquina.instancias">
<mat-checkbox
(change)="onCheckChange($event, $event.source, $event.checked)"
[attr.typeid]="instancia.id">
{{instancia.nombre}}
</mat-checkbox>
</li>
onCheckChange(event: any, checkbox: MatCheckbox, isChecked: boolean){
console.log("check event")
console.log(event.target.getAttribute('typeid'));
}
Лучше было бы забыть об использовании атрибута и просто сделать onCheckChange($event, instancia.id)..?
@MikeOne возвращает неопределенное значение
Тогда это объясняет. Только событие? В любом случае, если честно, я бы просто пошел на свой второй комментарий.
@MikeOne о боже... ты абсолютно прав. Я собираюсь сделать это. Большое спасибо!
Прохладно. Удачного кодирования!
Тип $event
должен быть MatCheckboxChange
, и он имеет 2 свойства.
/** Change event object emitted by MatCheckbox. */
export declare class MatCheckboxChange
{
/** The source MatCheckbox of the event. */
source: MatCheckbox;
/** The new `checked` value of the checkbox. */
checked: boolean;
}
Таким образом, цель не существует на MatCheckboxChange
, и вы получите сообщение об ошибке
ошибка TS2339: "Цель свойства" не существует для типа "MatCheckboxChange".
Как предложил @MikeOne, просто передайте instancia.id
методу onCheckChange($event, instancia.id)
.
Что вы видите, когда просто регистрируете event.target? (PS: это похоже на запах кода.. зачем вам это нужно?)