Есть ли способ остановить переходы до завершения блока кода? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть два утверждения, приводящие к изменениям в представлении:

statement1; // changes a databinding
statement2; // is an asynchronous call which does several changes

Я бы хотел, чтобы оба изменения были применены к представлению одновременно. В настоящее время оператор1 завершает работу, применяет свои изменения к представлению, пока оператор2 все еще обрабатывает. Таким образом, изменение из Statement1 видно за несколько миллисекунд до того, как изменение из Statement2 становится видимым, что выглядит не очень хорошо. Есть ли способ остановить просмотр пока не завершены оба оператора?

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вы можете на время отключить вид от обнаружения изменения угла.

  1. Вставить ChangeDetectorRef в ваши компоненты

constructor(private changeDetectorRef: ChangeDetectorRef) { }

отключить обнаружение изменений до выписки1 и повторно включить его после выписки2.
this.changeDetectorRef.detach();

statement1; // changes a databinding

statement2; // is an asynchronous call which does several changes

this.changeDetectorRef.reattach();

https://angular.io/api/core/ChangeDetectorRef#detach

0 голосов
/ 04 октября 2019

Звучит так, что вам нужно использовать распознаватель для получения информации для выписки 2. Получив информацию из выписки 2, вы захотите пойти по маршруту и ​​показать информацию из выписки 1 и 2. .

https://angular.io/guide/router#resolve-guard

Если вы не хотите ждать оператора 2, прежде чем перейти на новый маршрут, вам нужно будет сделать оба оператора асинхронными и ждать, чтобы показать результатыутверждения 1, пока утверждение 2 не будет завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...