所以我一直在翻阅 Angular.io 中的文档以及 AngularFire2 的 Git Docs。在完成一些教程工作并看到它有效后,我决定尝试以“更正确”的方式做事。
我的理解是,如果您要与应用程序内不同组件中的相同数据进行交互,那么最好编写一个服务。在我的示例中,我正在使用 Angular2/4 构建一个小型 CMS?并使用firebase来存储数据。
所以我写了第一部分,管理员可以在主页上更改他的 CTA。所以要做到这一点,他会去管理面板通过输入对文本进行更改并保存。然后当然在主页中您会看到更新的文本。所以 home 组件实际上只能读取。问题是您将如何创建服务并使其可导入到使用它的组件中?
import { Component } from '@angular/core';
import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database';
@Component({
selector: 'app-root',
template: `
<h1>{{ item | async | json }}</h1>
<input type="text" #newname placeholder="Name" />
<input type="text" #newsize placeholder="Size" />
<br />
<button (click)="save(newname.value)">Set Name</button>
<button (click)="update(newsize.value)">Update Size</button>
<button (click)="delete()">Delete</button>
`,})
export class AppComponent {
item: FirebaseObjectObservable<any>;
constructor(db: AngularFireDatabase) {
this.item = db.object('/item');
}
save(newName: string) {
this.item.set({ name: newName });
}
update(newSize: string) {
this.item.update({ size: newSize });
}
delete() {
this.item.remove();
}
}
正如您在代码中看到的那样,他们将其直接带入了主要组件。这会更好(在我不知情的情况下)成为可以注入的服务。我自己写了几次尝试这样做。只会得到许多类型的错误。有什么帮助吗?