fix(upgrade): propagate return value of resumeBootstrap (#22754)
Fixes #22723 PR Close #22754
This commit is contained in:
parent
ff34d5ea7a
commit
a2330ff2db
|
@ -389,8 +389,9 @@ export class UpgradeAdapter {
|
||||||
const originalResumeBootstrap: () => void = windowAngular.resumeBootstrap;
|
const originalResumeBootstrap: () => void = windowAngular.resumeBootstrap;
|
||||||
windowAngular.resumeBootstrap = function() {
|
windowAngular.resumeBootstrap = function() {
|
||||||
windowAngular.resumeBootstrap = originalResumeBootstrap;
|
windowAngular.resumeBootstrap = originalResumeBootstrap;
|
||||||
windowAngular.resumeBootstrap.apply(this, arguments);
|
const r = windowAngular.resumeBootstrap.apply(this, arguments);
|
||||||
resolve();
|
resolve();
|
||||||
|
return r;
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
resolve();
|
||||||
|
|
|
@ -268,7 +268,7 @@ export class UpgradeModule {
|
||||||
windowAngular.resumeBootstrap = function() {
|
windowAngular.resumeBootstrap = function() {
|
||||||
let args = arguments;
|
let args = arguments;
|
||||||
windowAngular.resumeBootstrap = originalResumeBootstrap;
|
windowAngular.resumeBootstrap = originalResumeBootstrap;
|
||||||
ngZone.run(() => { windowAngular.resumeBootstrap.apply(this, args); });
|
return ngZone.run(() => windowAngular.resumeBootstrap.apply(this, args));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2909,6 +2909,29 @@ withEachNg1Version(() => {
|
||||||
}, 100);
|
}, 100);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
it('should propagate return value of resumeBootstrap', fakeAsync(() => {
|
||||||
|
@NgModule({imports: [BrowserModule]})
|
||||||
|
class MyNg2Module {
|
||||||
|
}
|
||||||
|
|
||||||
|
const adapter: UpgradeAdapter = new UpgradeAdapter(MyNg2Module);
|
||||||
|
const ng1Module = angular.module('ng1', []);
|
||||||
|
let a1Injector: angular.IInjectorService|undefined;
|
||||||
|
ng1Module.run([
|
||||||
|
'$injector', function($injector: angular.IInjectorService) { a1Injector = $injector; }
|
||||||
|
]);
|
||||||
|
|
||||||
|
const element = html('<div></div>');
|
||||||
|
window.name = 'NG_DEFER_BOOTSTRAP!' + window.name;
|
||||||
|
|
||||||
|
adapter.bootstrap(element, [ng1Module.name]).ready((ref) => { ref.dispose(); });
|
||||||
|
|
||||||
|
tick(100);
|
||||||
|
|
||||||
|
const value = (<any>window).angular.resumeBootstrap();
|
||||||
|
expect(value).toBe(a1Injector);
|
||||||
|
}));
|
||||||
|
|
||||||
it('should wait for ng2 testability', async(() => {
|
it('should wait for ng2 testability', async(() => {
|
||||||
@NgModule({imports: [BrowserModule]})
|
@NgModule({imports: [BrowserModule]})
|
||||||
class MyNg2Module {
|
class MyNg2Module {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
import {NgModule, Testability, destroyPlatform} from '@angular/core';
|
import {NgModule, Testability, destroyPlatform} from '@angular/core';
|
||||||
import {NgZone} from '@angular/core/src/zone/ng_zone';
|
import {NgZone} from '@angular/core/src/zone/ng_zone';
|
||||||
import {fakeAsync, tick} from '@angular/core/testing';
|
import {fakeAsync, flush, tick} from '@angular/core/testing';
|
||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
|
||||||
import {UpgradeModule} from '@angular/upgrade/static';
|
import {UpgradeModule} from '@angular/upgrade/static';
|
||||||
|
@ -48,6 +48,25 @@ withEachNg1Version(() => {
|
||||||
expect(stayedInTheZone).toEqual(true);
|
expect(stayedInTheZone).toEqual(true);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
it('should propagate return value of resumeBootstrap', fakeAsync(() => {
|
||||||
|
const ng1Module = angular.module('ng1', []);
|
||||||
|
let a1Injector: angular.IInjectorService|undefined;
|
||||||
|
ng1Module.run([
|
||||||
|
'$injector', function($injector: angular.IInjectorService) { a1Injector = $injector; }
|
||||||
|
]);
|
||||||
|
const element = html('<div></div>');
|
||||||
|
window.name = 'NG_DEFER_BOOTSTRAP!' + window.name;
|
||||||
|
|
||||||
|
bootstrap(platformBrowserDynamic(), Ng2Module, element, ng1Module);
|
||||||
|
|
||||||
|
tick(100);
|
||||||
|
|
||||||
|
const value = (<any>window).angular.resumeBootstrap();
|
||||||
|
expect(value).toBe(a1Injector);
|
||||||
|
|
||||||
|
flush();
|
||||||
|
}));
|
||||||
|
|
||||||
it('should wait for ng2 testability', fakeAsync(() => {
|
it('should wait for ng2 testability', fakeAsync(() => {
|
||||||
const ng1Module = angular.module('ng1', []);
|
const ng1Module = angular.module('ng1', []);
|
||||||
const element = html('<div></div>');
|
const element = html('<div></div>');
|
||||||
|
|
Loading…
Reference in New Issue