Angular2 @Input () Массив не устанавливается - PullRequest
0 голосов
/ 05 апреля 2019

Попытка передать массив в параметры @Input (), но он вообще не отображается.

<ng-container *ngIf = "searchResults != undefined">
   <searchresult *ngFor = "let result of searchResults;" 
      [title] = 'result.title'
      [authorName] = 'result.authorName'
      [content] = 'result.content'
      [tagList] = "result.tagList"
   ></searchresult>
</ng-container>

<p *ngIf = "searchResults == undefined">loading...</p>

а затем в результате поиска у меня

<div class = "search-result">

<div class = 'result-top-section'>
    <div class = 'author-profile'>
         <img width = '70' height = '70' class = 'profile-icon' src= '/images/ogpfp.png'/>
         <p>{{ authorName }}</p>
    </div>
    <div class = 'content'>
        <h2>{{ title }}</h2>
        <p>{{ content }}</p>
    </div>
</div>

<div class = 'result-tag-row'>
        <tag *ngFor = "let tag of tagList;" [tagName] = 'tag'></tag>
</div>

это класс SearchResultComponent

@Component({
 selector: 'searchresult',
 templateUrl: './searchResult.component.html',
 styleUrls: ['./searchResult.component.css']
})

export class SearchResultComponent implements ISearchResult{

 @Input()
 title: string;

 @Input()
 authorName: string;

 @Input()
 content: string;

 @Input()
 tagList: string[];
}

https://snag.gy/Nt4JIo.jpg это массив, так что, как вы видите, список тегов заполнен

https://snag.gy/SIX0Gs.jpg это то, что выводит html, поскольку вы можете видеть, что каждое свойство ввода установлено, кроме списка тегов

Я, наверное, что-то здесь упускаю, если есть что-нибудь, дайте мне знать. Заранее спасибо.

1 Ответ

1 голос
/ 05 апреля 2019

Как указано в комментариях, вы сделали опечатку (result.tagList вместо result.tags) при привязке списка тегов к входу tagsList вашего searchresult компонента.

Чтобы исправитьпроблема, вы должны изменить привязку на [tagList] = "result.tags".

...