使用 *ngFor 构建嵌套的 Angular Material MatMenu 出现错误

如何解决使用 *ngFor 构建嵌套的 Angular Material MatMenu 出现错误

我尝试在角度材质组件中构建嵌套(两层)MatMenu,但是当我在浏览器中运行它时,发生了错误

component.html

<!-- header -->
<div class="header">
    <!-- nav -->
    <div class="nav">
        <ng-container *ngFor="let navMenu of navMenus">
            <button mat-button [matMenuTriggerFor]="btnMenu">{{ navMenu.name }}</button>
            <mat-menu #btnMenu="matMenu">
                <ng-container *ngFor="let menu of navMenu.menus">
                    <ng-container *ngIf="!menu.children">
                        <a mat-button mat-menu-item href="{{ menu.url }}" target="_blank">{{ menu.name }}</a>
                    </ng-container>
                    <ng-container *ngIf="menu.children">
                        <button mat-button *ngIf="menu.children" [matMenuTriggerFor]="parentMenu"
                            mat-menu-item>{{ menu.name }}</button>
                        <mat-menu #parentMenu="matMenu">
                            <ng-container *ngFor="let child of menu.children">
                                <a mat-button mat-menu-item href="{{ child.url }}" target="_blank">{{ child.name }}</a>
                            </ng-container>
                        </mat-menu>
                    </ng-container>
                </ng-container>
            </mat-menu>
        </ng-container>
    </div>
</div>

导航菜单

[{
    "name": "Documentation","icon": "read","menus": [{
        "name": "Java","url": "https://docs.oracle.com/en/java/javase/index.html"
    },{
        "name": "Git","url": "https://git-scm.com/book/zh/v2"
    },{
        "name": "Build","children": [{
            "name": "Maven","url": "http://maven.apache.org/guides/index.html"
        },{
            "name": "Gradle","url": "https://docs.gradle.org/current/userguide/userguide.html"
        }]
    },{
        "name": "Database","children": [{
            "name": "MysqL","url": "https://dev.MysqL.com/doc/refman/8.0/en/"
        },{
            "name": "Postgresql","url": "https://dohttps://www.postgresql.org/docs/current/index.html"
        }]
    },{
        "name": "Spring","url": "https://spring.io/projects"
    },{
        "name": "MyBatis","url": "http://www.mybatis.org/mybatis-3/zh/index.html"
    },{
        "name": "Web","children": [{
            "name": "MDN","url": "https://developer.mozilla.org/zh-CN/"
        },{
            "name": "Angular","url": "https://angular.cn/"
        },{
            "name": "Ant.D","url": "https://ant-design.gitee.io/"
        }]
    }]
},{
    "name": "Study hard","icon": "code","menus": [{
        "name": "GitHub","url": "https://github.com/","children": null
    },{
        "name": "LeetCode","url": "https://leetcode.com/"
    }]
}]

错误

ERROR 错误:NG0300:多个组件匹配带有标记名 a 的节点

Angular 6
AppComponent_ng_container_2_ng_container_5_ng_container_1_Template app.component.html:10
Angular 9
AppComponent_ng_container_2_ng_container_5_Template app.component.html:9
Angular 22
RxJS 5
Angular 19
RxJS 17
ZoneAwarePromise Angular
toPromise RxJS
loadData app.service.ts:18
__awaiter tslib.es6.js:74
ZoneAwarePromise Angular
__awaiter tslib.es6.js:70
loadData main.js:69
loadData app.component.ts:31
__awaiter tslib.es6.js:74
ZoneAwarePromise Angular
__awaiter tslib.es6.js:70
loadData main.js:213
ngOnInit app.component.ts:19
Angular 24 core.js:5967
Angular 15
RxJS 5
Angular 19
RxJS 17

这一行的错误

<a mat-button mat-menu-item href="{{ menu.url }}" target="_blank">{{ menu.name }}</a>

多个组件匹配带有标记名 a 的节点

我不知道为什么会这样

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?