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它是一个自定义组件而不是一个离子页面。你找到解决问题的方法了吗?