С @ Output
@Output() someClickAction = new EventEmitter<void>();
Вы также можете отправить некоторые данные, просто изменив пустоту на правильный тип данных.
Затем в onClickMe()
просто вызовите emit
в свойстве someClickAction
.
import {Component, EventEmitter, Output} from '@angular/core';
@Component({
selector: 'my-card',
template: `<button (click)="onClickMe()">select</button>`
})
export class MyCardComponent {
@Output() someClickAction = new EventEmitter<void>();
onClickMe() {
this.someClickAction.emit();
}
}
В html это будет выглядеть следующим образом.
<div>
<p>Type 1</p>
<my-card (someClickAction)="someFunction()"></my-card>
</div>
<div>
<p>Type 2</p>
<my-card (someClickAction)="someOtherFunction()"></my-card>
</div>
С @Input ()
Здесь Вы не будете отправлять информацию о клике дочернему элементу, но будете указывать тип в родительском элементе, и дочерний элемент будет вести себя в зависимости от значения.
По @Input
вы указываете свой атрибут для своего компонента
import {Component, EventEmitter, Input} from '@angular/core';
@Component({
selector: 'my-card',
template: `<button (click)="onClickMe()">select</button>`
})
export class MyCardComponent {
@Input() type: number;
onClickMe() {
if(this.type === 1) {
} else if(this.type === 2) {
}
}
}
In HTML
<div>
<p>Type 1</p>
<my-card [type]="1"></my-card>
</div>
<div>
<p>Type 2</p>
<my-card [type]="2"></my-card>
</div>
Подробнее об этом можно прочитать здесь