Angular 在角度上可以观察到';找不到财产
我有一个用户列表,如图所示: 当我点击一个用户时,我想显示一个包含该用户详细信息的新页面。因此,我创建了一个名为“details”的新组件,并将此HTML代码放入details.component.HTML文件中:Angular 在角度上可以观察到';找不到财产,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,我有一个用户列表,如图所示: 当我点击一个用户时,我想显示一个包含该用户详细信息的新页面。因此,我创建了一个名为“details”的新组件,并将此HTML代码放入details.component.HTML文件中: <div *ngIf="user$"> <h1>{{ user$.name }}</h1> <ul> <li><strong>Username:</strong> {{ user$
<div *ngIf="user$">
<h1>{{ user$.name }}</h1>
<ul>
<li><strong>Username:</strong> {{ user$.username }}</li>
<li><strong>Email:</strong> {{ user$.email }}</li>
<li><strong>Phone:</strong> {{ user$.phone }}</li>
</ul>
</div>
所以我在这里做的是:
我将userId作为URL中的参数(这部分工作正常,我使用console.log(this.user$)检查了它,并将其记录下来)
然后,我从我的数据服务中加载具有此Id的用户(这部分也起作用,再次通过日志检查)
然后我从HTML调用用户$up,它首先成功编译,但几秒钟后出现此错误:
ERROR in src/app/details/details.component.html:3:10 - error TS2339: Property 'name' does not exist
on type 'Object'.
<h1>{{ user$.name }}</h1>
src/app/details/details.component.html:3:10中出现错误-错误TS2339:属性“name”不存在
在类型“Object”上。
{{user$.name}
属性“username”、“phone”和“email”也会出现相同的错误
我认为问题在于,在html试图访问observable的时候,observable还没有加载,但这就是为什么我把它放在,所以这段代码只有在加载后才能执行。。。
请帮忙
p、 在本教程之后,我提出了以下代码:
但我甚至直接从教程中复制了代码片段,但仍然不起作用
p、 另外,根据教程,我需要导入details.component.ts文件中的Observable,但我的程序告诉我,导入从未使用过。所以我删除了导入,奇怪的是我仍然能够订阅可观察的?也许有问题
以下是控制台日志:
我在这里看到了多个问题
Object
更改为any
getUser()
接收来自route
的参数时,从getUser()投影可观察的对象。试试下面的方法
从'@angular/core'导入{Component,OnInit};
从“@angular/router”导入{ActivatedRoute}”;
从“rxjs/operators”导入{switchMap};
从“../data.service”导入{DataService};
@组成部分({
选择器:“应用程序详细信息”,
templateUrl:'./details.component.html',
样式URL:['./details.component.scss']
})
导出类详细信息组件实现OnInit{
用户:任何;
构造函数(私有路由:ActivatedRoute,私有数据:DataService){}
恩戈尼尼特(){
this.route.params.pipe(switchMap(params=>this.data.getUser(params['id']))
.订阅(
数据=>{
这个用户=数据;
console.log(this.user);
}
);
}
}
用户
{{user?.name}
- 用户名:{{user?.Username}
- 电子邮件:{{user?.Email}
- 电话:{{user?.Phone}
虽然您的方法在我看来并不干净,但使用正确的类型键入user$
应该可以解决您的问题。首先,您可以通过键入any
:`user$:any验证它。请共享this.data.getUser()的代码首先,您不应该对所有内容都使用单个变量。我同意@AshishRanjan,尝试使用“any”而不是“Object”
ERROR in src/app/details/details.component.html:3:10 - error TS2339: Property 'name' does not exist
on type 'Object'.
<h1>{{ user$.name }}</h1>