2016-10-17 2 views
1

Мне удалось получить набор данных из почтового запроса, но теперь представление не обновляется при его назначении.Обновить шаблон с полученными данными

@Component({ 
    selector: 'news-section', 
    templateUrl: './news-section.component.html', 
    styleUrls: ['./news-section.component.scss'], 
    providers: [ NewsService ], 
}) 
export class NewsSectionComponent implements AfterViewInit { 
    slider: any; 
    stub: number[]; 
    articles: NewsItemComponent[]; 

    constructor(translate: TranslateService, private http: Http, public newsService: NewsService) { 
    translate.setDefaultLang('en'); 
    translate.use('en'); 

    this.articles = []; 

    newsService.getNews().subscribe(news => { 
     let articles: Array<any> = []; 
     news.map((res) => { 
      articles.push(new NewsItemComponent(res.text, res.created_at 
, 'author', res.id_str); 
      }); 
      console.log('articles', articles); 
      this.articles = articles; 
     }); 
    } 


} 

Я вижу в console.log, что список статей обновляется правильно, но он не отражает изменения в представлении.

<section id="news" sectionVisible> 
    <div> 
    <h1>{{ 'Nav.News' | translate }}</h1> 
    </div> 
    <div class="news-wrapper clear-fix"> 
     <div class="column carousel-cell" ngFor="#article of articles"> 
     <article> 
     <a href="#" class="hovered"> 
      <div class="bg-hover"> 
      <p> 
       Visit 
      </p> 
      </div> 
     </a> 
     <h2>News title</h2> 
     <time>21.10.2015 16:30</time> 
     <p> 
      Etiam faucibus sodales leo, rutrum molestie nisi luctus in. Duis quis viverra diam, vitae hendrerit augue. Donec ultricies nisi vel placerat sodales. Donec varius convallis mauris egestas vulputate. Integer fermentum tincidunt hendrerit. Donec eget nisl 
      eros. Pellentesque a fringilla lorem. 
     </p> 
     </article> 
     </div> 
    </div> 
</section> 

Нужно ли добавить слушателей? Я просмотрел http://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html, но все мои угловые знания очень простые и нужны некоторые пояснения

+0

сообщения Какой ошибки вы получаете в консоли браузера? –

ответ

2
ngFor="#article of articles" 

должен быть

*ngFor="let article of articles" 
+0

Можете ли вы описать, в чем разница между обоими ngFors? Я предполагаю, что вторая ограничивается статьями, а первая - просто чистой? – mjanisz1

+1

Первый полностью недействителен из-за отсутствия '*' ('*' указывает на [структурную директиву] (https://angular.io/docs/ts/latest/guide/structural-directives.html)) и '# '- это старый синтаксис, который несколько месяцев назад был заменен' let'. –

+0

Еще одно, может быть, вы тоже узнаете. Я пытаюсь обернуть слайдер вокруг созданных элементов. При использовании предыдущего значения и всех элементов, где отображается слайдер, работает правильно. Теперь, когда я запускаю слайдер в подписке после того, как все элементы должны отображаться, он ведет себя так, как будто в данном контейнере не будет элементов. Есть ли какой-либо тайм-аут или событие после изменения представления, чтобы запустить функцию после обновления новостей? – mjanisz1

Смежные вопросы