我正试图在我的Header组件中制作一个可折叠的菜单,但在我的ANGLE项目中,我遇到了正确的JSON格式问题.我一直收到这样的错误:

错误:src/app/components/header/header.component.html:48:49-错误 TS2339:类型上不存在属性‘subLinks’. 折叠:布尔型;链接:{标题:字符串;url:字符串;子链接:{ 标题:字符串;url:字符串;}[];}[];}‘.

48<li*ngFor="允许项目的子链接.子链接" Class="子链接">

我似乎不能独自解决这个错误,我需要一些帮助.

My HTML template is this:

<li *ngFor="let item of navigationItems; let i = index" class="link">
            <a [href]="item.url" class="main-wrapper">{{ item.title }}</a>
            <a class="d-inline-block main-wrapper" (click)="toggleCollapse(i)" role="button" [attr.aria-expanded]="!item.collapsed" [attr.aria-controls]="'navCollapse_' + i">
              <img *ngIf="item.collapsed" src="./assets/img/icons/plus.svg" alt="plus-icon" class="ms-3">
              <img *ngIf="!item.collapsed" src="./assets/img/icons/minus.svg" alt="minus-icon" class="ms-3">
            </a>
            <div [id]="'navCollapse_' + i" class="collapse link-collapse main-collapse" [class.show]="!item.collapsed">
              <ul class="sublink-wrapper">
                <li *ngFor="let sublink of item.sublinks" class="sublink">
                  <a [href]="sublink.url">{{ sublink.title }}</a>
                </li>
              </ul>
            </div>
          </li>

My TS code is this:

export class HeaderComponent {
  constructor() { }

  navigationState: string = 'out';
  
  navigationItems = [
    {
      title: 'Lorem ipsum',
      collapsed: true,
      links: [
        {
          title: 'Lorem ipsum 1',
          url: 'some-url',
          sublinks: [
            { title: 'Lorem ispum 1.1', url: 'some url' },
            { title: 'Lorem ispum 1.2', url: 'some url' },
            { title: 'Lorem ispum 1.3', url: 'some url' }
          ]
        },
        {
          title: 'Lorem ipsum 2',
          url: 'some-url',
          sublinks: [
            { title: 'Lorem ispum 2.1', url: 'some url' },
            { title: 'Lorem ispum 2.2', url: 'some url' },
            { title: 'Lorem ispum 2.3', url: 'some url' },
            { title: 'Lorem ispum 2.4', url: 'some url' }
          ]
        },
        {
          title: 'Lorem ipsum 3',
          url: 'some-url',
          sublinks: [
            { title: 'Lorem ispum 3.1', url: 'some url' },
            { title: 'Lorem ispum 3.2', url: 'some url' },
            { title: 'Lorem ispum 3.3', url: 'some url' }
          ]
        },
        {
          title: 'Lorem ipsum 4',
          url: 'some-url',
          sublinks: [
            { title: 'Lorem ispum 4.1', url: 'some url' },
            { title: 'Lorem ispum 4.2', url: 'some url' },
            { title: 'Lorem ispum 4.3', url: 'some url' },
            { title: 'Lorem ispum 4.4', url: 'some url' },
            { title: 'Lorem ispum 4.5', url: 'some url' }
          ]
        },
      ]
    }
  ];

  ngOnInit(): void {
  }

  toggleCollapse(index: number): void {
    this.navigationItems[index].collapsed = !this.navigationItems[index].collapsed;
  }

}

推荐答案

Jaromanda X说得对,sublinkslinks中对象的一个属性.因此,您应该首先遍历"链接".总共必须有3 *ngFor(不是2):超过navigationItems,然后是links,然后是sublinks. Also you can consider removing *ngIf`,并对src和alt使用元运算符.所以最后我预计会看到这样的事情:

<li *ngFor="let item of navigationItems; let i = index" class="link">
      <a class="main-wrapper" (click)="toggleCollapse(i)" role="button" [attr.aria-expanded]="!item.collapsed" [attr.aria-controls]="'navCollapse_' + i">
        {{ item.title }}
        <img [src]="item.collapsed ? './assets/img/icons/plus.svg' : './assets/img/icons/minus.svg'" [alt]="item.collapsed ? 'plus-icon' : 'minus-icon'" class="ms-3">
      </a>
      <div [id]="'navCollapse_' + i" class="collapse link-collapse main-collapse" [class.show]="!item.collapsed">
        <ul class="sublink-wrapper">
          <li *ngFor="let link of item.links" class="sublink">
            <a [href]="link.url">{{ link.title }}</a>
            <ul *ngIf="!item.collapsed" class="sub-sublink-wrapper">
              <li *ngFor="let sublink of link.sublinks" class="sub-sublink">
                <a [href]="sublink.url">{{ sublink.title }}</a>
              </li>
            </ul>
          </li>
        </ul>
      </div>
    </li>

Javascript相关问答推荐

使用axios.获取实时服务器时的404响应

我开始使用/url?q=使用Cheerio

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

如何为我的astro页面中的相同组件自动创建不同的内容?

屏幕右侧屏障上的产卵点""

WebGL 2.0无符号整数输入变量

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

可更改语言的搜索栏

try 使用javascript隐藏下拉 Select

映射类型定义,其中值对应于键

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

<;img>;标记无法呈现图像

为什么延迟在我的laravel项目中不起作用?

使用线性插值法旋转直线以查看鼠标会导致 skip

在Java脚本中录制视频后看不到曲目

ReferenceError:无法在初始化之前访问setData

用Reaction-RT-Chart创建实时条形图

无法使用Redux异步函数读取未定义的useEffect钩子的属性';map';

在传单的图像覆盖中重新着色特定 colored颜色 的所有像素

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符