服務工作正常 SharedService行爲對象未在角2
@Injectable()
export class SharedService {
public userData: BehaviorSubject<IUserData> = new BehaviorSubject<IUserData>({
/*user: <IUserVM>{
identityId: '-',
imgSrc: 'public/assets/img/user_sm.png',
name: '-'
},*/
accountList: [],
selectedAccount: <IAccountVM>{}
//sessionValid: false
});
updateUserData(data: IUserData){
this.userData.next(data);
}
public toggleSidebar: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
updateToggleSidebar(data: boolean){
this.toggleSidebar.next(data);
}
}
這個服務被用於共享和更新數據
app.component.html
<li *ngFor="let item of membershipList" (click)="switchAcc(item);" [ngClass]="{'active': item.id === selectedAccount.id}">
<a><img [src]="item.imageUrl" id="{{item.id}}"></a>
</li>
<li><button class="btn btn btn-quiet-outline add-team-btn"> + </button></li>
</ul>
app.component.ts
switchAcc(item?: IMembership) {
// this.sharedService.userData.value.selectedAccount = item;
var userData = {
"accountList": this.membershipList,
"selectedAccount": item
};
this.sharedService.updateUserData(userData);
console.log("userData", userData);
if (item.type.toLowerCase() == 'personal') {
this.router.navigate(['/app/teams/' +item.id + '/dashboard/personal']);
} else {
this.router.navigate(['/app/teams/' + item.id + '/dashboard/business']);
}
$('.row-offcanvas').toggleClass('active');
}
business.dashboard.component.ts
constructor(public sharedService: SharedService, private activateroute: ActivatedRoute) {
this.sharedService.userData.subscribe(value => {
console.log("value",value)
this.selectedAccount = value.selectedAccount;
this.accountList = value.accountList;
console.log("selectedAccount",value.selectedAccount.name);
});
}
business.dashboard.component.ts
是我嘗試獲得更新的價值,但價值得到更新的頁面,但它並沒有在HTML反映,當我嘗試控制檯(this.selectdaccount)它保留prevoius值沒有更新值
而當我雙擊鏈接app.component.html
它工作完美我認爲問題在第一次它得到更新,然後聽取更新的值
你在哪裏提供您'SharedService'你的組件? – echonax
在共享文件夾服務中,但switchAcc是一種訪問共享服務和更新數據的功能。 –
您可以共享您提供此服務的代碼,並且可以添加組件的@Component註釋嗎? – echonax