Angular 离子加速器中的组件生命周期
我构建了一个组件,如下所示Angular 离子加速器中的组件生命周期,angular,typescript,ionic2,ionic3,Angular,Typescript,Ionic2,Ionic3,我构建了一个组件,如下所示 export class AcknowledgementComponent implements AfterViewInit { private description: string; @Input('period') period: string; constructor() { } ngAfterViewInit() { console.log(this.period) } 在模板中使用该变量之前,我必须对该变量执行一些逻
export class AcknowledgementComponent implements AfterViewInit {
private description: string;
@Input('period') period: string;
constructor() {
}
ngAfterViewInit() {
console.log(this.period)
}
在模板中使用该变量之前,我必须对该变量执行一些逻辑。但在
ngOnInit
和ngAfterViewInit
中,变量未定义。有人能建议使用哪个钩子来获取变量吗?您可以通过两种方式截取输入属性:
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; }
}
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);
}
}
}
这些示例只是使输入
字符串
大写。您在哪里设置此组件?你能添加那个html吗?并且period
是父组件中的一个变量,对吗?@duanx它是一个自定义组件而不是一个离子页面。你找到解决问题的方法了吗?