我正在开发一个已经启动的项目,当使用
ngFor
指令时,一旦获取数据就不会重新渲染,我测试了在 2 个组件上复制完全相同的代码(如果它是一个旧组件)它可以工作,但在new中不起作用,我已经在不同的新组件中测试了它,但没有一个工作,这是如此奇怪的具体,我不知道我是否可以复制它。
(我尝试过将逻辑添加到
trackBy
块中)两个组件都是模块的一部分 async
changeDetection
这是Observables
Promises
OnInit
在我的
AdmisionesModule
中被调用
@NgModule({
declarations: [
newComponent,
oldComponent,
...
],
imports: [
AdmisionesRoutingModule
...
],
AdmisionesRoutingModule
代码非常简单
const routes: Routes = [
{ path: '', component: containBothComponent },
{ path: 'comprobantePago/:referencia', component: containBothComponent },
{ path: 'error/:codigo', component: containBothComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class AdmisionesRoutingModule {}
AdmisionesModule
app-routing.module.ts
const routes: Routes = [
{ path: '', redirectTo: '/usuario/iniciar-sesion', pathMatch: 'full' },
{ path: 'usuario', loadChildren: () => import('@login/login.module').then(mod => mod.LoginModule) },
{ path: 'admisiones',canActivate: [SecurityGuard], loadChildren: () => import('@admisiones/admisiones.module').then(mod => mod.AdmisionesModule)},
];
ngFor
newComponent.ts/newComponent.ts
options: any[];
constructor(public myServices: MyService) {
this.myServices.askService().subscribe({
next(values: any[]) {
this.options = values;
},
error(err) {
console.error(err);
},
});
}
newComponent.html/newComponent.html
<p *ngFor="let option of options">{{option.economic_sector_desc}}</p>
Angular CLI: 16.1.8
Node: 18.15.0
Package Manager: npm 9.7.2
Angular: 16.2.7
@angular-devkit/architect 0.1602.4
@angular-devkit/build-angular 16.2.4
@angular-devkit/core 16.2.4
@angular-devkit/schematics 16.1.8
@angular/cdk 16.2.6
@angular/cli 16.1.8
@angular/material 16.2.6
块中)
您的导入中是否有
CommonModule- 可能会出现这种情况。在 [ngFor][1] 文档中查找更多信息您可以使用 asyncPipe 来实现渲染或数据的最佳实践方法
在你的组件中声明 observable
@schematics/angular 16.1.8
修改您的模板如下
谢谢! [1]:https://v16.angular.io/api/common/NgFor