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方法。由于主题的性质,如果订阅后值被击中,它会将值发送给所有订阅者。你能试着把主题改成行为主题吗。