///
1,
父组件===> 子组件
子组件
@input
get {}
set {} 的意义是希望子组件收到参数进行一些处理后,再展示;
2,子组件监听父组件值变化
// 子组件实现ngOnchanges实现监听父组件传值变化
@Input() major: number;
@Input() minor: number;
changeLog: string[] = [];
ngOnChanges(changes: SimpleChanges) {
const log: string[] = [];
//获取changes的方法
for (const propName in changes) {
const changedProp = changes[propName];
const to = JSON.stringify(changedProp.currentValue);
//isFirstChange()第一次接受父组件传值
if (changedProp.isFirstChange()) {
log.push(`Initial value of ${propName} set to ${to}`);
} else {
//changedProp.previousValue 获取变化前的值
const from = JSON.stringify(changedProp.previousValue);
log.push(`${propName} changed from ${from} to ${to}`);
}
}
this.changeLog.push(log.join(', '));
}
3,父组件获取子组件
//子组件, 关键字voted this.voted.emit(agreed)
@Output() voted = new EventEmitter<boolean>();
didVote = false;
vote(agreed: boolean) {
this.voted.emit(agreed);
this.didVote = true;
}
4.父组件直接访问子组件方法
//下面是父组件代码,父组件中#timer指向子组件 start,stop 方法在子组件中实现
<button (click)="timer.start()">Start</button>
<button (click)="timer.stop()">Stop</button>
<div class="seconds">{{timer.seconds}}</div>
<app-countdown-timer #timer></app-countdown-timer>