【发布时间】:2021-05-10 16:45:01
【问题描述】:
我收到以下错误:
当我尝试使用 *ngIf 更新视图(在图标显示上切换)时。
这是我的 .ts:
@Component({
selector: 'app-orders',
templateUrl: './orders.component.html',
styleUrls: ['./orders.component.css'],
encapsulation: ViewEncapsulation.None
})
export class OrdersComponent implements OnInit, OnDestroy {
loadedPendingOrders: Order[] = [];
loadedProcessedOrders: Order[] = [];
loadedDeliveredOrders: Order[] = [];
loadedCancelledOrders: Order[] = [];
pendingOrderTimelines: string[] = [];
deliveredOrderTimelines: string[] = [];
cancelledOrderTimelines: string[] = [];
isDeliverySlotsActive: boolean;
searchTerm: string;
newOrderStatus: string;
private subscription: Subscription;
constructor(private ordersService: OrdersManagerService, private shopPreferencesService: ShopManagerService, private apiManager: ApiManagerService) {}
ngOnInit(): void {
this.subscription = timer(0, 5000).pipe(
switchMap(() => this.apiManager.fetchShopOrders())
).subscribe(orders => {
this.isDeliverySlotsActive = this.shopPreferencesService.isDeliverySlotsActive();
const loadedOrders: OrdersList = orders;
/* do stuff with orders */
});
}
onNewOrderAdded(status: string){
this.newOrderStatus = status;
}
....
}
这是我的 .html:
<div id="tab-group">
<mat-tab-group dynamicHeight animationDuration="400ms">
<mat-tab>
<ng-template mat-tab-label>
<span>Pending</span>
<img src="../../assets/my-orders/blue-tiny.svg" *ngIf="newOrderStatus == 'PENDING'">
</ng-template>
<app-orders-list
[orders]="loadedPendingOrders"
[timelines]="pendingOrderTimelines"
[isDeliverySlotsActive]="isDeliverySlotsActive"
[searchTerm]="searchTerm"
(newOrderStatus)="onNewOrderAdded($event)"
></app-orders-list>
...
</mat-tab>
</mat-tab-group>
</div>
视图正在正确更新。但是,错误仍然被抛出。怎么会?
提前致谢。
【问题讨论】:
-
错误的堆栈跟踪应该指向模板中触发错误的特定值。我有一种感觉,这是由
dynamicHeight指令引起的,但如果没有代码,它只是一个猜测。是哪一个? -
@Stavm 指向这一行:
<img src="../../assets/my-orders/blue-tiny.svg" *ngIf="newOrderStatus === 'PENDING'"> -
@Stavmn 我已经用错误图片更新了问题。现在会检查是否是因为
dynamicHeight。 -
@Stavm 删除
dynamicHeight并没有修复它。这是一个奇怪的错误,因为视图正在正确更新,但仍然抛出错误。 -
你可以尝试删除
(newOrderStatus)="onNewOrderAdded($event)"看看是否发生
标签: angular typescript error-handling angular-ng-if