fix(upgrade): allow attribute selectors for components in ng2 which are not part of upgrade (#11808)
fixes #11280
This commit is contained in:
parent
3ef5ede6d6
commit
6fc46526ae
|
@ -401,9 +401,12 @@ export class UpgradeAdapter {
|
||||||
._bootstrapModuleWithZone(
|
._bootstrapModuleWithZone(
|
||||||
DynamicNgUpgradeModule, undefined, ngZone,
|
DynamicNgUpgradeModule, undefined, ngZone,
|
||||||
(componentFactories: ComponentFactory<any>[]) => {
|
(componentFactories: ComponentFactory<any>[]) => {
|
||||||
componentFactories.forEach((componentFactory) => {
|
componentFactories.forEach((componentFactory: ComponentFactory<any>) => {
|
||||||
componentFactoryRefMap[getComponentInfo(componentFactory.componentType)
|
var type: Type<any> = componentFactory.componentType;
|
||||||
.selector] = componentFactory;
|
if (this.upgradedComponents.indexOf(type) !== -1) {
|
||||||
|
componentFactoryRefMap[getComponentInfo(type).selector] =
|
||||||
|
componentFactory;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.then((ref: NgModuleRef<any>) => {
|
.then((ref: NgModuleRef<any>) => {
|
||||||
|
|
|
@ -964,6 +964,31 @@ export function main() {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should allow attribute selectors for components in ng2', async(() => {
|
||||||
|
const adapter: UpgradeAdapter = new UpgradeAdapter(forwardRef(() => MyNg2Module));
|
||||||
|
var ng1Module = angular.module('myExample', []);
|
||||||
|
|
||||||
|
@Component({selector: '[works]', template: 'works!'})
|
||||||
|
class WorksComponent {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component({selector: 'root-component', template: 'It <div works></div>'})
|
||||||
|
class RootComponent {
|
||||||
|
}
|
||||||
|
|
||||||
|
@NgModule({imports: [BrowserModule], declarations: [RootComponent, WorksComponent]})
|
||||||
|
class MyNg2Module {
|
||||||
|
}
|
||||||
|
|
||||||
|
ng1Module.directive('rootComponent', adapter.downgradeNg2Component(RootComponent));
|
||||||
|
|
||||||
|
document.body.innerHTML = '<root-component></root-component>';
|
||||||
|
adapter.bootstrap(document.body.firstElementChild, ['myExample']).ready((ref) => {
|
||||||
|
expect(multiTrim(document.body.textContent)).toEqual('It works!');
|
||||||
|
ref.dispose();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
describe('examples', () => {
|
describe('examples', () => {
|
||||||
it('should verify UpgradeAdapter example', async(() => {
|
it('should verify UpgradeAdapter example', async(() => {
|
||||||
const adapter: UpgradeAdapter = new UpgradeAdapter(forwardRef(() => Ng2Module));
|
const adapter: UpgradeAdapter = new UpgradeAdapter(forwardRef(() => Ng2Module));
|
||||||
|
@ -994,7 +1019,7 @@ export function main() {
|
||||||
|
|
||||||
document.body.innerHTML = '<ng2 name="World">project</ng2>';
|
document.body.innerHTML = '<ng2 name="World">project</ng2>';
|
||||||
|
|
||||||
adapter.bootstrap(document.body, ['myExample']).ready((ref) => {
|
adapter.bootstrap(document.body.firstElementChild, ['myExample']).ready((ref) => {
|
||||||
expect(multiTrim(document.body.textContent))
|
expect(multiTrim(document.body.textContent))
|
||||||
.toEqual('ng2[ng1[Hello World!](transclude)](project)');
|
.toEqual('ng2[ng1[Hello World!](transclude)](project)');
|
||||||
ref.dispose();
|
ref.dispose();
|
||||||
|
|
Loading…
Reference in New Issue