2016-11-15 5 views
1

Я изучаю Angular2 и конвертирую приложение в Angular2. Теперь я пытаюсь создать динамические страницы, которые загружают контент из Firebase. Но я застрял. Если я правильно понял, мне нужна верхняя нагрузка AngularFire в конструкторе и маршрутизация в ngOnInit(). Поскольку конструктор называется первым, я не могу использовать маршрутизатор Param для вызова AngularFire.Страница динамической загрузки с AngularFire и Angular2

Это мой код прямо сейчас:

export class StaticContentComponent { 
    pagename; 
    isHome; 

    ngOnInit(): void { 
     this.route.params.forEach((params: Params) => { 
      this.pagename = params['pageName']; 
      this.isHome = (this.pagename == 'home'); 
     }); 
    } 

    pagecontent: FirebaseObjectObservable<any[]>; 
    constructor(af: AngularFire, private route: ActivatedRoute) { 
     this.pagecontent = af.database.object('/pages/content/' + this.pagename); 
    } 
} 

Я пытался переключать их, использовать другие inits, но большие красные линии ошибок в журнале.

Кроме того, следует ли использовать сервис только с AngularFire? Я не уверен, примеры AngularFire не используют их.

Спасибо.

ответ

1

Вы можете просто вложить вызовы.

constructor(private af: AngularFire, private route: ActivatedRoute) { } 

ngOnInit(): void { 
    this.route.params.forEach((params: Params) => { 
     this.pagename = params['pageName']; 
     this.isHome = (this.pagename == 'home'); 

     this.pagecontent = af.database.object('/pages/content/' + this.pagename); 
    }); 
} 

Это делает следующее:

  1. subscribe к маршруту Params
  2. после их устранения, извлечения объекта из Firebase

EDIT:

Для ваших секунд вопрос, AngularFire сам по себе является сервисом, поэтому, если функционал y AF достаточно для вас, вам не нужно обертывать его внутри другой службы.

Что мне нравится делать, это обернуть AF в другую службу и, например, добавить отладочные сообщения консоли.

+0

Thnx ответы. Если я попробую код, я получил «af not find», если я добавлю af: AngularFire; params не могут быть прочитаны (Невозможно прочитать свойства «params» undefined) Невозможно прочитать свойства «params» undefined – user1664803

+0

Я обновил свой ответ. Вы забыли добавить ключевое слово 'private' до' af: AngularFire' –

+0

Он работает. Благодарю. – user1664803

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