Я использую Angular 7 и сталкиваюсь с проблемой => после входа в систему API GET вызывает успешно и компонент также получает данные, но пользовательский интерфейс не отображает эти данные.
Когда я открываю консоль браузера, данные сразу же заполняются пользовательским интерфейсом, а в консоли отображается предупреждение.
"core.js: 15686 Навигация запущена вне зоны Angular, вы забыли вызвать 'ngZone.run ()'?"
Я погуглил это предупреждение и нашел обходной путь, например this.ngZone.run()
, и вызвал свой API внутри него.
Но проблема в том, что я использую более 40 компонентов и вызываю так много API в каждом компоненте. Поэтому мне приходится вызывать ngZone.run()
при каждом вызове API, что, кажется, сложно сделать.
Пожалуйста, предложите мне лучший подход для решения этой проблемы. Заранее спасибо.
app.component.ts
getEmployees(): void {
this.employeeService.getEmployees().subscribe(e => {
this.employees = e;
});
}
app.service.ts
@Injectable()
export class EmployeeService {
constructor(private httpClient: HttpClient) { }
getEmployees() {
return this.httpClient.get<EmployeeModel[]>('employees');
}
getEmployees
. Откуда вы звонитеgetEmployees(): void
- person Ravinder Payal   schedule 06.12.2018employees
при установкеapp.component.ts
? - person André Werlang   schedule 21.02.2019getEmployees()
? Вызывается ли он напрямую каким-то щелчком мыши или он заключен в некоторые обратные вызовы? - person albanx   schedule 10.03.2019