Я смотрел учебник и пытался сделать то, что я узнал. Я получил сообщение об ошибке ниже. Я не мог понять, почему у меня есть это сообщение об ошибке в консоли браузера. Он говорит [ERROR ->]<span *ngSwitchCase = "true">, но я не знаю, почему он говорит, что ngSwitchCase неверен. .Проверил все файлы и код, но проблем вроде нет. Где моя ошибка?
ОШИБКА
Uncaught Error: Template parse errors:
No provider for NgSwitch (" <td>{{item.description}}</td>
<td [ngSwitch] = "item.action"></td>
[ERROR ->]<span *ngSwitchCase = "true">
Yes
</span>
"): ng:///AppModule/AppComponent.html@25:14
No provider for NgSwitch ("
Yes
</span>
[ERROR ->]<span *ngSwitchCase = "false">
No
</span>
"):
app.component.html
<table class = "table table-striped table-bordered">
<thead>
<tr>
<th></th>
<th>Description</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor = "let item of items;let i=index">
<td>{{i+1}}</td>
<td>{{item.description}}</td>
<td [ngSwitch] = "item.action"></td>
<span *ngSwitchCase = "true">
Yes
</span>
<span *ngSwitchCase = "false">
No
</span>
</tr>
</tbody>
</table>
app.comonent.ts
export class AppComponent {
items:Model[]= [
new Model('Breakfast',false),
new Model('Sport',false),
new Model('Studying',true),
new Model('Cemo',false),
]
}
Модель.ts
export class Model
{
description:string;
action:Boolean;
constructor(description:string,action:Boolean)
{
this.description=description;
this.action=action;
}
}
@ShivaniPatel Я сделал, но не сработало



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны обернуть свой диапазон внутри тега td, как это, потому что директива ngSwitch является областью действия для элемента td, а не вне элемента td
<td [ngSwitch] = "item.action">
<span *ngSwitchCase = "true">
Yes
</span>
<span *ngSwitchCase = "false">
No
</span>
</td>
Если вам нужно выбрать только одну из двух альтернатив, вы также можете использовать *ngIf-else: https://ultimatecourses.com/blog/angular-ngif-else-then
вы должны сначала применить [ngSwitch] к родительскому элементу, чтобы вести себя как контейнер для ваших случаев переключения и «предоставить» вам условие, которое вы проверяете/сравниваете, чтобы применить/отобразить любой из ваших случаев переключения в дочерних элементах, которые встретились условие родителя любого типа (свойство/поле/метод/функция).
поэтому родительский элемент работает как «Поставщик»
ОШИБКА: в NodeInjector не найден провайдер для NgSwitch.
<div>
<p *ngSwitchCase = "true">
Yes
</p>
<p *ngSwitchCase = "false">
No
</p>
</div>
с провайдером и без ошибок:
<div [ngSwitch] = "something">
<p *ngSwitchCase = "true">
Yes
</p>
<p *ngSwitchCase = "false">
No
</p>
</div>
попробуйте сделать так: [ngSwitch] = "{{item.action}}"