angular - 是否有可能从特定 ID 获取数据,数据未显示
问题描述
id 也得到了,但是在 html 文件中无法打印来自特定 id 的数据,实际上是使用 crud application.add,list,delete 完成的,但是在 view 的情况下 onView 函数有问题,你能请帮帮我
查看-ts-文件
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { CrudServicesService } from '../services/crud-services.service';
@Component({
selector: 'app-view-items',
templateUrl: './view-items.component.html',
styleUrls: ['./view-items.component.css']
})
export class ViewItemsComponent implements OnInit {
viewId: string | null
viewItems: any
constructor(private crudservice: CrudServicesService,
private activatedroute: ActivatedRoute) {
this.viewId = this.activatedroute.snapshot.paramMap.get('id')
console.log(this.viewId)
}
ngOnInit(): void {
this.onView()
}
onView() {
if (this.viewId !== null) {
this.crudservice.viewFunction(this.viewId).subscribe(data => {
console.log(data)
this.viewItems = data
})
}
}
}
html 文件
<ul *ngIf="viewItems">
<li>{{viewItems?.item_name}}</li>
</ul>
服务文件
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/compat/firestore';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class CrudServicesService {
constructor(private db: AngularFirestore) { }
viewFunction(id: string): Observable<any> {
return this.db.collection('items').doc(id).snapshotChanges()
}
}
路由文件
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AddItemsComponent } from './add-items/add-items.component';
import { ListItemsComponent } from './list-items/list-items.component';
import { ViewItemsComponent } from './view-items/view-items.component';
const routes: Routes = [
{ path: 'view/:id', component: ViewItemsComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
这是路由文件,这些都很好,问题出在 ts 文件或服务文件中。
解决方案
所以我假设console.log(data)
inonView()
没有显示任何内容?如果是这种情况,它甚至可能无法访问服务调用本身,因为if (this.viewId !== null)
, ngOnInit()
step 在组件生命周期中只发生一次。
我没有使用 AngularFirestore,但您需要采取一些额外的步骤才能从snapshotChanges()
https://stackoverflow.com/a/55304884/15440211中获取数据
推荐阅读
- python - 搜索确切的字符串,匹配它。如果没有匹配的条目添加参数,如果部分匹配修改python文件
- c++ - C++ 字符串类
- python - 如何在 django 的管理站点上显示列名?
- python - 使用 ast.literal_eval 转换字符串时出错
- c++ - 有没有办法简单地连接多个向量?
- python - 如何命名包含多个索引的图像(使用 pt.savefig)?
- javascript - 单击编辑时替换锚标记文本但一次替换一个项目?
- reactjs - 对象作为 React 子级无效(找到:[object Promise])。如果您打算渲染一组孩子,请改用数组
- javascript - 将html导出为pdf横向模式
- c++ - 致命错误 LNK1112:模块机器类型“x64”与通过 vcvarsall.bat x86 运行构建的目标机器类型“X86”冲突