Ошибка машинописного текста: свойство 'items' не существует для типа 'MenuItem | Пункт меню[]' - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь создать вложенное меню, используя PrimeNG. Приведенный ниже код дает ошибку компиляции:

export class AppComponent {
    title = 'test-proj';
    items: MenuItem[];
    ngOnInit() {
        this.items = [
            {
                label: 'File',
                icon: 'pi pi-pw pi-file',

            },
            {
                label: 'Regions',
                icon: 'pi pi-fw pi-pencil',
                items: [] as MenuItem[]
            },
            {
                label: 'Help',
                icon: 'pi pi-fw pi-question',
            }
        ];

        for(let i = 0; i< 5; i++){
          this.items[1].items[i] = {
            label: 'R'+i,
            items: [] as MenuItem[]
          }
          console.log(this.items[1].items[i]);
          for(let j = 0; j< 4; j++){
            this.items[1].items[i].items[j] = {// error at this line
              label: 'A'+j, 
              items: [] as MenuItem[]
            }


          }
        }

    }
}

Ошибка:

ERROR in app.component.ts(41,36): error TS2339: Property 'items' does not exist on type 'MenuItem | MenuItem[]'.
  Property 'items' does not exist on type 'MenuItem[]'.

package.json:

"dependencies": {
    "@angular/animations": "~7.0.0",
    "@angular/common": "~7.0.0",
    "@angular/compiler": "~7.0.0",
    "@angular/core": "~7.0.0",
    "@angular/forms": "~7.0.0",
    "@angular/http": "~7.0.0",
    "@angular/platform-browser": "~7.0.0",
    "@angular/platform-browser-dynamic": "~7.0.0",
    "@angular/router": "~7.0.0",
    "core-js": "^2.5.4",
    "font-awesome": "^4.7.0",
    "primeicons": "^1.0.0",
    "primeng": "^7.0.0-beta.1",
    "rxjs": "~6.3.3",
    "zone.js": "~0.8.26"
}

Один из способов - использовать любой в качестве типа для элементов. Я пришел из Java и не понимаю, почему я получаю эту ошибку. Есть ли способ исправить это, сохранив тип элементов как MenuItem?

Редактировать 1: журналы

logs

1 Ответ

0 голосов
/ 01 ноября 2018

попробуйте

 for(let i = 0; i< 5; i++){
    this.items[1].items[i] = {
       label: 'R'+i,
       items: [] as MenuItem[]
    }

    for(let j = 0; j< 4; j++){
       (this.items[1].items[i] as MenuItem).items[j] = {// error at this line
           label: 'A'+j, 
           items: [] as MenuItem[]
       }
    }
 }
...