Angular 名为';id';不适用于角度插值

Angular 名为';id';不适用于角度插值,angular,typescript,angular-router,angular-routerlink,Angular,Typescript,Angular Router,Angular Routerlink,我正在学习Angular,运行CLI 8.3.8版 所以我花了几个小时试图弄明白为什么下面这样的命名不起作用: user.ts export class User { id: number ... app-routing.module.ts const routes: Routes = [ { path: 'details/:id', component: UserDetailComponent } ... user-list.component.html <a *ng

我正在学习Angular,运行CLI 8.3.8版

所以我花了几个小时试图弄明白为什么下面这样的命名不起作用:

user.ts

export class User {
    id: number
...
app-routing.module.ts

const routes: Routes = [
    { path: 'details/:id', component: UserDetailComponent }
...
user-list.component.html

<a *ngFor="let user of users" routerLink="/details/{{ user.id }}">
    <span>{{user.id}}</span>
...
而且
中的
用户id
也不会显示

在搞乱了路由器链接和路径之后,我开始随机将“id”更改为“userId”,当user-list.component.html如下所示:

<a *ngFor="let user of users" routerLink="/detail/{{ user.userId }}">

它不需要对其他文件进行任何其他更改即可工作。
元素也是如此

我还遇到了相反的情况,即另一个属性--
user.name
将与
{user.name}}
一起很好地显示,但是将属性名更改为
user.userName
并在任何地方替换它,例如
{user.userName}
都不起作用,并且不会显示名称


用户数据是从一个简单的服务器设置中检索的,
user
javabean的属性名是
userId
name
,因此我认为这与此有关,但为什么组件模板是我唯一需要服务器和客户端中的属性名匹配的地方呢?(为什么user.service.ts在所有http请求中都不受此影响?

如果您正在处理的对象上的属性实际上命名为
usedId
,为什么会起作用?@jonsharpe我认为
{{user.id}
是在User.ts文件中指定的类的组件中创建的用户对象的引用,而不是我从serverSwap获得的用于此语法的引用,看看这是否解决了您的问题:
[routerLink]=“['/detail',User.userId]”
@Zze为什么更改语法会更改值?您说的“覆盖属性名”是什么意思? 他们从来不是真正的
用户
s,他们从来没有
id
属性;他们有一个
userId
属性。问题很可能是您在服务器响应的形状方面对HttpClient撒了谎-请参阅。
<a *ngFor="let user of users" routerLink="/detail/{{ user.userId }}">