在角度获取中使用服务获取ExpressionChangedAfterItHaHasBeenCheckedError:检查表达式后,表达式已更改

时间:2019-02-18 10:54:11

标签: typescript angular6

我从头开始创建导航栏,其中所有字段均以服务开头。 (但此时服务是空的)

例如:

export class LaunchService {

  userProfile: any = {
    userData: { id:'',phone:''},

    test2: {
      a: '',
      b: '',
      c: '',
      d: '',
      e: ''
    },

  }
}

和组件

我的组件(这是Inital,在应用程序启动时提供空服务)

export class UserProfileComponent implements OnInit {

    userProfile: any = {

    }

    constructor(private launchService: LaunchService) { }

    ngOnInit() {

        this.userProfile.id = this.launchService.userProfile.userData.id
        this.userProfile.phone = 
        this.launchService.userProfile.userData.phone
        this.userProfile.a = this.launchService.userProfile.test2.a
        this.userProfile.b = this.launchService.userProfile.test2.b
        this.userProfile.c = this.launchService.userProfile.test2.c
        this.userProfile.d = this.launchService.userProfile.test2.d
        this.userProfile.e = this.launchService.userProfile.test2.e
    }

UserProfileComponent.html:

<div>

  <div>
    <div>
      {{ this.userProfile.id}}
    </div>
    <div>
      {{this.userProfile.phone}}
    </div>
    <div>
      {{this.userProfile.test2.a}}
    </div>
    <div>
      {{this.userProfile.test2.b}}
    </div>
    <div>
      {{this.userProfile.test2.c}}
    </div>
    <div>
      {{this.userProfile.test2.d}}
    </div>

  </div>
</div>

然后 继续在应用程序中继续使用某些组件中的服务收集数据,它仅添加userData,另一个组件填充test2属性。因此,当我得到我的角度应用程序的“最后一个屏幕”时,所有字段都被填充。而且UserProfileComponent应该可以显示我在屏幕期间收集的所有数据。

但是它不起作用。我只看到初始值,而不是所有数据,并且在调试时看到服务正在填充数据。

所以我试图将html更改为实际引用

UserProfileComponent.html:

<div>

  <div>
    <div>
      {{ LaunchService.userData.id}}
    </div>
    <div>
      {{LaunchService.userData.phone}}
    </div>
    <div>
      {{LaunchService.test2.a}}
    </div>
    <div>
      {{LaunchService.test2.b}}
    </div>
    <div>
      {{LaunchService.test2.c}}
    </div>
    <div>
      {{LaunchService.test2.d}}
    </div>

  </div>
</div>

我收到此错误:

AppComponent.html:8 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value:

使它工作的最佳方法是什么?

0 个答案:

没有答案