将Priming升级到版本9后,页面未呈现



在将我的项目升级到Angular 9之后。我已经将Priment中使用的组件从p-dataTable更改为p-Table,如Priming文档中所述。不幸的是,现在我的页面无法呈现。Html

<p-table [value]="popup.assignedUser.selectedList" [scrollable]="true"

这一行说assignedUser是未定义的,但在旧的Primeng dataTable和angular 6的早期版本中,它运行得很好。我应该更改什么,以便代码能像在Priming Table之前一样工作?在这个html的ts中,我已经声明了

@ViewChild('popup', {static: false}) popup: UsersPopupComponent;

弹出组件看起来像:

@ViewChild('userModal') userModal;
@ViewChild('assignedUser') assignedUser: AssignedUserTableComponent;
@ViewChild('assignUser') assignUser;
type = globals.viewType;
reportView = false;
constructor(private reportsComponent: ReportsComponent) {
}
openModal(): void {
this.reportView = true;
this.userModal.nativeElement.classList.add('open-modal');
}
closeModal() {
this.userModal.nativeElement.classList.remove('open-modal');
}
refreshTree() {
this.assignUser.refreshTree(this.assignUser.treeSelect);
}
gatherData() {
this.reportsComponent.gatherUserIds();
}
deleteList() {
this.assignedUser.selectedList = [];
}

并且在另一个组件AssignedUserTable 中设置了来自assignedUser的selectedList

addUser(inputList) {
if (this.typeService === this.typeInput) {
inputList.forEach(il => (
!this.selectedList.find(sl => sl.userId === il.userId)) ?
this.selectedList.push(il) : {});
this.emitUser();
this.selectedList.forEach(user => {
user._fullName = this.userService.getUserFullNameFromCachedUsers(user.userId);
});
this.selectedList.sort((a, b) =>
a._fullName.substr(a._fullName.indexOf(' ') + 1).localeCompare(b._fullName.substr(b._fullName.indexOf(' ') + 1)));
}
}

尝试在html中的assignedUser之后添加一个问号。基本上,问号意味着

if assignedUser !== undefined && assignedUser !== null
<p-table [value]="popup.assignedUser?.selectedList" [scrollable]="true"

如果assigneUser在视图之后启动,则视图将具有未定义的对象。有了这个技巧,它将等待有一个值来启动。

相关内容

  • 没有找到相关文章

最新更新