带有AngularFire和Angular2的动态加载页面

时间:2016-11-15 10:23:07

标签: angular firebase firebase-realtime-database angularfire

我正在学习Angular2并将应用程序转换为Angular2。现在我正在尝试创建从Firebase加载内容的动态页面。但是我被困住了。如果我理解正确,我需要在构造函数中的顶部加载AngularFire和ngOnInit()中的routeparms。由于首先调用构造函数,因此我无法使用路由器Param来调用AngularFire。

这是我现在的代码:

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);
    }
}

我尝试切换它们,使用其他内容,但日志中会出现大的红线错误。

另外,我应该只使用只有AngularFire的服务吗?我不确定,AngularFire的例子并没有使用它们。

感谢。

1 个答案:

答案 0 :(得分: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到路线参考
  2. 解决后,从Firebase中检索对象
  3. 编辑:

    对于你的秒问题,AngularFire本身就是一项服务,所以如果AF的功能足够你,你就不必将它包装在另一个服务中。

    我喜欢做的是将AF包装在另一个服务中并添加控制台调试消息,例如。