Angular *ngFor不更新价值变化

Angular *ngFor不更新价值变化,angular,Angular,我的*ngFor不会在值更改时更新。我的相关代码: chat.component.html <div *ngFor="let contact of contactList; let i = index;"> {{contact.name}} </div> <a *ngFor="let mandant of mandanten;let i=index;" class="dropdown-item" (click)="selectedTeam = mandan

我的
*ngFor
不会在值更改时更新。我的相关代码:

chat.component.html

<div *ngFor="let contact of contactList; let i = index;">
    {{contact.name}}
</div>
<a *ngFor="let mandant of mandanten;let i=index;" class="dropdown-item" (click)="selectedTeam = mandant.name; setTeamId(mandant);">
settam.service.ts

export class ChatComponent implements OnInit {
    public selectedTeamId: string;
    constructor(
        private apiClientService :ApiClientService,
        private teamService: SetTeamService
    ){ 
         this.teamService.teamIdChange.subscribe(value => {
            this.selectedTeamId = value;
            this.apiClientService.getAPIObject(param, "chat-room-list").then((data) => {
                 this.contactList = data.response_payload.contacs;
            });
        });
     }
 }
export class SetTeamService {
    public teamId:string = '';
    teamIdChange: Subject<string> = new Subject<string>();
    constructor( ) {
        this.teamIdChange.subscribe((value) => {
            this.teamId = value;
            sessionStorage.setItem('teamId',value);
        });
    }

    setTeamId(teamId){
       this.teamIdChange.next(teamId);
    }
}
setTeamId(team) {
  let teamId = team['team_id'];
  this.teamService.setTeamId(teamId);
}
navbar.component.html

<div *ngFor="let contact of contactList; let i = index;">
    {{contact.name}}
</div>
<a *ngFor="let mandant of mandanten;let i=index;" class="dropdown-item" (click)="selectedTeam = mandant.name; setTeamId(mandant);">

在评论部分有很多好问题,正如很多人建议的那样,代码应该可以工作。是的,的确如此

但是我的一位同事将
changedtectionstrategy
更改为
onPush


评论部分有很多好问题,很多人都建议代码应该有效。是的,的确如此

但是我的一位同事将
changedtectionstrategy
更改为
onPush


您的代码看起来不错,应该可以正常工作,但我认为它的输入错误是
数据。response\u payload.contacs
,可能是
数据。response\u payload.contacts
@VivekDoshi捕捉得不错,但这不是问题所在。我在restapi响应中有一个输入错误,它的
contacs
,而不是
contacts
。需要在我的下一个后端部署中修复它,但这里它不重要请提供
数据.response\u payload.contacs的输出,您得到了什么?请确认您得到了更新的响应`this.contactList=data.response\u payload.contacs;`与控制台日志及其不同的是,您在html中看到的内容。看起来您的navcomponent在组件订阅服务“主题”之前调用了setTimeId方法。由于主题的性质,如果订阅后值被击中,它会将值发送给所有订阅者。你能试着把主题改成BehaviorSubject吗?你的代码看起来不错,应该可以正常工作,但我认为它的输入错误是
数据。这里的response\u payload.contacs可能是
数据。response\u payload.contacts
@VivekDoshi很好,但这不是问题所在。我在restapi响应中有一个输入错误,它的
contacs
,而不是
contacts
。需要在我的下一个后端部署中修复它,但这里它不重要请提供
数据.response\u payload.contacs的输出,您得到了什么?请确认您得到了更新的响应`this.contactList=data.response\u payload.contacs;`与控制台日志及其不同的是,您在html中看到的内容。看起来您的navcomponent在组件订阅服务“主题”之前调用了setTimeId方法。由于主题的性质,如果订阅后值被击中,它会将值发送给所有订阅者。你能试着把主题改成行为主题吗。