gpt4 book ai didi

Angular 无法读取未定义的属性 'subscribe'

转载 作者:太空狗 更新时间:2023-10-29 17:47:46 30 4
gpt4 key购买 nike

我正在尝试使用来自服务器的 json 响应创建动态菜单,但出现此错误:

MenuComponent.html:4 ERROR TypeError: Cannot read property 'subscribe' of undefined at MatMenuTrigger.push../node_modules/@angular/material/esm5/menu.es5.js.MatMenuTrigger.ngAfterContentInit

当我点击按钮时,它会这样说:

ERROR TypeError: Cannot read property 'createEmbeddedView' of undefined at ViewContainerRef_.push../node_modules/@angular/core/fesm5/core.js.ViewContainerRef_.createEmbeddedView

我猜测无法创建按钮是因为 json 响应尚未准备好,但我不知道如何修复它。

Component.ts

export class MenuComponent implements OnInit {
branchList: Branches = new Branches(); //read somewhere that I need to initialize, not sure

ngOnInit(): void {
this.http.get('http://demo8635782.mockable.io/branches').subscribe((data: any) => {
if (data === null) {
console.log('api request returns empty!');
}
this.branchList = data;
});
}

constructor(private breakpointObserver: BreakpointObserver, private http: HttpClient) {
}
}

Template.html

<button mat-button [matMenuTriggerFor]="branchesMenu">Branches</button>
<mat-menu #branchesMenu="matMenu">
<div *ngFor="let branch of branchList?.branches">
<button mat-menu-item [matMenuTriggerFor]="branch?.name">{{branch.name}}</button>
</div>
</mat-menu>

Stackblitz

最佳答案

我在这个 stackblitz 中解决了它我使用正确版本的 Material 和 Angular 更新依赖项,使用模板中的可观察对象将按钮包装在 ngIf 中,还删除了 mat-menu-item 的 matMenuTriggerFor 并在 app.module 中导入 BrowserAnimationsModule。

编辑以添加子菜单,为此您必须在 ngFor 迭代中创建子菜单。

关于 Angular 无法读取未定义的属性 'subscribe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51161253/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com