我正在使用AWS Amplify,我的应用程序在本地(ng serve
)中正常工作。
当我尝试运行npm run build:serverless:deploy
时出现此错误:
src / app / nav / nav.component.html(11,15)中的错误:类型“可观察”的属性“属性”不存在
我的nav.component.ts
....
loggedUser : Observable<CognitoUser|any> = new EmptyObservable();
subscription : Subscription;
ngOnInit() {
this._authService.currentUser.subscribe(u => {
if (u && u.username) {
this.loggedUser = u;
} else {
this.loggedUser = new Observable<CognitoUser|any>();
}
});
}
我的package.json
....
"build:serverless": "npm run build:browser:serverless && npm run build:server:serverless",
"build:prod:deploy": "npm run build:prod && npm run deploy",
"build:serverless:deploy": "npm run build:serverless && npm run deploy",
"deploy": "serverless deploy",
....
我的nav.component.html
....
<li *ngIf="(loggedUser && loggedUser?.attributes); then logout else login"></li>
.....
答案 0 :(得分:-1)
您最初将loggedUser
声明为可观察对象,因此您得到的错误是完全正确的,attributes
在Observable上不存在。
如果我们查看您的进一步实现,则您的loggedUser
根本不是可观察的,您在其中订阅了一个可观察的并将其值分配给loggedUser
。
因此您的loggedUser
应该是:
loggedUser = <CognitoUser>{};
现在,当我们初始化您的对象时,我们也不需要在模板中使用安全的导航操作符。您无需具有对其进行初始化,只需保留安全的导航操作符即可:
loggedUser: CognitoUser;
但是我喜欢初始化变量。这是您的选择:)