@alexbog90

Как прописать тип обвервабл, созданного из массива?

public internNavItems: NavBarInterface[] = [
    {name: 'Profile', routerLink: RouterUrl.USER_INFO, icon: 'fa fa-user'},
    {name: 'Tasks', routerLink: RouterUrl.TASKS, icon: 'fa fa-play-circle-o'},
    {name: 'My Settings', routerLink: RouterUrl.MY_SETTINGS, icon: 'fa fa-cogs'},
    // {name: 'Editor', routerLink: RouterUrl.CODE_EDITOR, icon: 'fa fa-edit'},
  ];
  public internNavItems$: Observable<NavBarInterface[]> = from(this.internNavItems);


public internNavItems$ выдает ошибку:
Type 'Observable' is not assignable to type 'Observable'.
Type 'NavBarInterface' is missing the following properties from type 'NavBarInterface[]': length, pop, push, concat, and 26 more.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
from(array) даст вам поток из последовательных элементов этого массива.
Т.е. это Observable<NavBarInterface>

Тип можно явно и не указывать, он будет выведен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@alexbog90 Автор вопроса
Не знаю, нужно ли создать новый вопрос, но из вашего ответа вытекает вопрос:
Как мне правильно вывести эти данные через асинк пайп в шаблон? При варианте ниже в консоли ошибка: NgFor only supports binding to Iterables such as Arrays, т.е internNavItems$ перебирать не получается, также на нем нет свойств name, routerLink и icon из интерфейса. Пробовал выводить internItem, также не отображается.

<div *ngFor="let internItem of internNavItems$ | async" >
    <li class="nav-item" routerLinkActive="active">
      <a [routerLink]='internItem.routerLink' class="nav-link">
        <i [class]="internItem.icon"></i>
        {{ internItem.name }}
      </a>
    </li>
  </div>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы