Насколько я знаю, zone.js
не должно вызывать проблем при использовании с navigator
методами, поскольку они хорошо известны и корректно исправлены.Кстати, если вы уверены в том, что говорите, вы все равно можете использовать zone.runOutsideAngular
для выхода из зоны:
constructor(private zone: NgZone) { }
yourMethod() {
this.zone.runOutsideAngular(() => {
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => console.log(stream))
.catch(err => console.error(err));
});
}
Если затем вы захотите повторно войти в зону, вы можете позвонить:
this.zone.run(() => {
// again inside a zone
});
Но имейте в виду, что вам это нужно, только если вы хотите продолжить асинхронный поток.Код синхронизации будет выполняться внутри зоны:
yourMethod() {
// this is inside a zone
this.zone.runOutsideAngular(() => {
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => {
// this is outside a zone
this.zone.run(() => {
// and again inside a zone
});
})
.catch(err => console.error(err));
});
// this is still inside a zone
}