要解决这个问题,可以在路由参数传递之前手动将文档的Id转换为小写。以下是一个示例解决方法:
import { RouterModule, Routes, ActivatedRoute } from '@angular/router';
import { AngularFirestore } from '@angular/fire/firestore';
const routes: Routes = [
{ path: 'document/:id', component: DocumentComponent }
];
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { AngularFirestore } from '@angular/fire/firestore';
@Component({
selector: 'app-document',
templateUrl: './document.component.html',
styleUrls: ['./document.component.css']
})
export class DocumentComponent implements OnInit {
documentId: string;
constructor(private route: ActivatedRoute, private firestore: AngularFirestore) { }
ngOnInit() {
this.route.paramMap.subscribe(params => {
this.documentId = params.get('id').toLowerCase(); // 将路由参数转换为小写
this.getDocument(this.documentId);
});
}
getDocument(id: string) {
// 使用转换后的文档Id来获取Firestore文档
this.firestore.collection('documents').doc(id).valueChanges().subscribe(document => {
console.log(document);
});
}
}
现在,当路由参数传递给DocumentComponent
组件时,它会自动将文档的Id转换为小写,并使用转换后的Id获取Firestore文档。