gpt4 book ai didi

angular - ionic 中的组件生命周期

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:12 26 4
gpt4 key购买 nike

我已经构建了一个组件如下

export class AcknowledgementComponent implements AfterViewInit {

private description: string;

@Input('period') period: string;
constructor() {
}

ngAfterViewInit() {
console.log(this.period)
}

在模板中使用它之前,我必须对该变量执行一些逻辑。但在 ngOnInitngAfterViewInit 中,该变量是未定义的。有人可以建议使用哪个钩子(Hook)来获取变量吗?

最佳答案

您可以通过两种方式拦截输入属性:

Using a setter:

export class AcknowledgementComponent {
private _period = "";

@Input('period')
set period(period:string) {
this._period = (period && period.toUpperCase()) || 'No input';
}
// Works with async operations. Emample:
// set period(period:string) {
// setTimeout(() => {
// this._period = (period && period.toUpperCase()) || 'No input';
// }, 5000);
// }

get period():string { return this._period; }
}

Using ngOnChanges:

import { Component, Input, SimpleChanges } from '@angular/core';
...
export class AcknowledgementComponent {
@Input() period;

ngOnChanges(changes: {[ propKey: string ]: SimpleChanges}){
this.period = '';

for(let propName in changes) {
let changedProp = changes[propName];
let newValue:string = String(changedProp.currentValue);
this.period = newValue.toUpperCase();

// Works with async operations. Emample:
// setTimeout(() => {
// this.period = (newValue && newValue.toUpperCase()) || 'No input';
// }, 5000);
}
}
}

这些示例只是将输入的 string 变为大写。

关于angular - ionic 中的组件生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45429077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com