2016-09-22 3 views
1

У меня есть компонент таблицы:Угловой 2, который подходит для показа показаний погрузки?

@Component({ 
    moduleId: module.id, 
    selector: 'ag-table', 
    template: ` 
     <span *ngIf="isLoading">Loading</span> 
     <table class="table"> 
      rows loaded through @Input() rows; 
     </table> 
    ` 
}) 

Тогда у меня есть родительский компонент:

@Component({ 
    moduleId: module.id, 
    selector: 'ag-page', 
    template: ` 
     <ag-table [rows]=rows></ag-table> 
    ` 
}) 

Теперь, в AG-странице, мне нужно, чтобы получить данные с сервера, так что я делаю http-запрос через службу, скажем, page.service.ts. В этот момент я хочу показать показание загрузки в своем аг-таблице.

Каков наилучший подход?

  1. Получить экземпляр компонента через ag-страницу с помощью @ViewChild и установить isLoading в true?

  2. Создайте table.service.ts, добавьте его в TableComponent и используйте наблюдаемые для обнаружения при загрузке данных.

  3. Другое предложение?

ответ

2

Вы можете проверить, установлен ли вход rows.

@Component({ 
    moduleId: module.id, 
    selector: 'ag-table', 
    template: ` 
     <span *ngIf="!rows">Loading</span> 
     <table class="table"> 
      rows loaded through @Input() rows; 
     </table> 
    ` 
}) 
export class AgTable { 
    @Input() 
    rows:Row[]; 
} 

Когда запуск приложения, ag-page не имеют ни одной строки, так что переменная rows передается ag-table неопределен. Таким образом, тест !rows возвращает true и отображается ваш диапазон загрузки.

В конце асинхронной нагрузки ag-page переопределяет свои строки новым значением. При привязке ввода строки задаются ag-table. Таким образом, тест !rows теперь является ложным, а диапазон загрузки удаляется.

+0

Интересно, это просто, и я думал, что могу сделать это только этими сложными способами ... Как насчет того, когда я нажму кнопку обновления данных в ag-странице, тогда мне нужно установить this.rows = undefined; снова и повторить процесс, правильно? –

+0

Да, если вы хотите добавить кнопку обновления в ag-странице, вам просто нужно «удалить this.rows» или «this.rows = null» или что-то в этом роде. Я просто понимаю, что вы можете сделать это еще проще (я сделал редактирование) –

+0

Не забудьте подтвердить ответ, если он вам ответит. –

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