尝试在Angular 9和Firebase上创建博客3(修改Angular使其能够访问Firebase,并在首页展示Firebase Storage上的图片)
在之前的一次会议中,我们已经完成了Angular Material的引入工作。
我希望在这次的TOP页面上放置一张图片,但是由于不能在代码中直接放置图片,所以我打算使用Firebase Storage。
为了引用Angular中的Firebase设置
Firebase设置
生成连接信息
-
- 「Project Overview – アプリの追加」を選択
プラットフォームはwebを選択
-
- 任意のニックネームをつけてアプリを登録します
Hostingはすでに作成済みのため、チェックなし
- ApiKey等の情報が生成されます
Angular端的处理
按照 @angular/fire 的设置步骤进行配置。
安装 AngularFire
我将安装@angular/fire。
npm install firebase @angular/fire --save
将Angular项目集成
- environments.ts(.prod.tsも)に生成した接続情報を登録します
export const environment = {
production: true,
firebase: {
apiKey: '<your-key>',
authDomain: '<your-project-authdomain>',
databaseURL: '<your-database-URL>',
projectId: '<your-project-id>',
storageBucket: '<your-storage-bucket>',
messagingSenderId: '<your-messaging-sender-id>'
}
};
- app.module.tsでAngularFireModuleをインポート
・・・
import { environment } from 'src/environments/environment';
import { AngularFireModule } from '@angular/fire';
@NgModule({
・・・
imports: [
・・・
AngularFireModule.initializeApp(environment.firebase),
・・・
],
・・・
})
export class AppModule { }
编辑首页
将图像放置在Firebase Storage中。
Firebase Storage的启动
- FirebaseコンソールのStorageから「始める」を選択します
当显示有关安全规则的提示时,请确认后点击“下一步”。
由于被问及区域,选择 asia-northeast1(东京)作为选项。
- 完了を押下するとバケットが作成されます
放置画像
images/top.jpgを配置します
设置安全规则
目前情况下,不会添加任何图像,而是将其设置为只读模式。
打开“规则”选项卡,将其更改为“仅允许读取”。
→ 这样就只能进行读取操作了。
从Angular侧引用Firebase Storage
进行 AngularFireStorage 的设置
- app.module.tsでAngularFireStorageModuleをインポート
・・・
import { AngularFireStorageModule } from '@angular/fire/storage';
@NgModule({
・・・
imports: [
・・・
AngularFireStorageModule,
・・・
-
- top.component.tsを修正します
imgタグのURLは動的に取得します
・・・
export class TopComponent implements OnInit {
imgUrl: string;
constructor(private storage: AngularFireStorage) {}
ngOnInit() {
this.storage.ref('images/top.jpg').getDownloadURL().subscribe(image => {
this.imgUrl = image;
});
}
}
-
- htmlファイルを修正します
それっぽくするために、お知らせとTwitterコンポーネントを作成し、枠だけ表示できるようにしてます
<div class="blog-title">
<h1>てらしー ブログ</h1>
<img [src]="imgUrl">
</div>
<div>
<div class="contents">
<app-top-news></app-top-news>
</div>
<div class="contents">
<app-top-twitter></app-top-twitter>
</div>
</div>
这样变成了这种感觉。
虽然我已经将标题调整为符合要求的菜单样式,但该菜单的链接状态尚未启用。
总结
这样博客感觉出来了!下一步,我想要处理博客列表页面和关于(自我介绍页面)的路由。
(更新)
尝试使用Angular 9和Firebase创建博客4(尝试实现屏幕切换)