Ошибка шаблона Angular 4: «анонимный» не содержит такого члена

Angular 4 написано на Typescript 2.3.4

component.ts

/**
 * Info that drives the tabs in the template. Array is filled
 * in ngOnInit() once data is received from the server
 */
public tabs:Array<{
  title:string,
  description:string,
  data:Array<{name:string}>
}>=[];

component.html

<section *ngFor="let t of tabs">
  ...
  <div *ngFor="let i of t.data">{{i.name}}</div>
                                  ^^^^^^
</section>

Ошибка компилятора

Angular: имя идентификатора не определено. <anonymous> не содержит такого члена

Сначала я подумал, что это связано с моей другой проблемой но это другое, потому что в форме модели tabs нет двусмысленности: компонент ясно показывает, что name является свойством каждого элемента массива data, а сам является свойством каждого члена массива tabs.

Что тут происходит?


person BeetleJuice    schedule 05.07.2017    source источник
comment
где вы назначаете данные на вкладки? пожалуйста, опубликуйте здесь. bcz я тестирую ваш код работает нормально   -  person Shailesh Ladumor    schedule 05.07.2017
comment
@ShaileshLadumor Даже если я никогда ничего не назначаю (например, если я удаляю свой ngOnInit()), возникает эта ошибка; поэтому ошибка не вызвана тем, как данные присваиваются tabs. Помните, что ошибка возникает в моем редакторе кода, а не во время выполнения, поэтому она не имеет ничего общего с данными, полученными с сервера.   -  person BeetleJuice    schedule 05.07.2017
comment
я тестирую ваш код, но работает нормально. назначьте вкладки Dayta в onNgInit() и распечатайте их в tamplate/.   -  person Shailesh Ladumor    schedule 05.07.2017
comment
Используете ли вы языковой сервис плагина? Какой редактор вы используете?   -  person yurzui    schedule 05.07.2017
comment
@yurzui Я не такой. Благодаря plunk от @ShaileshLadumor, я вижу, что он что-то делает с версией машинописного текста. Его демонстрация работает хорошо, но если вы измените версию TS (строка 44 из config.js) на версию, которую я использовал в OP (2.3.4), приложение вылетит.   -  person BeetleJuice    schedule 05.07.2017
comment
Я получаю ту же ошибку, используя расширение Angular Language Service с VS Code. Я думаю, что это ошибка в Angular Language Service, но я еще не нашел обходного пути.   -  person AJ Richardson    schedule 06.07.2018


Ответы (2)


Попробуйте добавить в привязку оператора безопасной навигации (?), который позволит вам перемещаться по пути объекта в ситуациях, когда путь может быть или не быть изначально действительным.

  <div *ngFor="let i of t.data">{{i?.name}}</div>
person Stephen R. Smith    schedule 05.07.2017

решение сработало!

выдает следующее сообщение:

Идентификатор «вопрос» не определен. '' не содержит такого члена

плюс подчеркни это

<div class="card-header">
          {{q.question}}  <!- underline this line with red color -->
            ^^^^^^^^^^
</div>

это проблема машинописного текста, и вы должны объявить вкладки любого типа, чтобы избежать этой проблемы
tabs : any [];

person nadir hamidou    schedule 13.10.2018
comment
Объявление типа как any избавляет от всякой поддержки типизации для этой переменной. Поскольку я использую эту переменную в другом месте (в своих машинописных файлах, а не только в шаблоне), я хотел бы, чтобы ее тип был четко определен. Это не очень хорошее решение для меня, но я рад, что оно сработало для вас. Спасибо, что поделился. - person BeetleJuice; 18.10.2018