fix(view_container): fixes injection on dynamically added views.

Closes #777
This commit is contained in:
Rado Kirov
2015-02-25 14:41:10 -08:00
parent 9b08ab3b3c
commit 2f015cc336
2 changed files with 28 additions and 1 deletions

View File

@ -19,6 +19,8 @@ import {Decorator, Component, Viewport} from 'angular2/src/core/annotations/anno
import {Template} from 'angular2/src/core/annotations/template';
import {Parent, Ancestor} from 'angular2/src/core/annotations/visibility';
import {If} from 'angular2/src/directives/if';
import {ViewContainer} from 'angular2/src/core/compiler/view_container';
export function main() {
@ -365,6 +367,29 @@ export function main() {
done();
})
});
it('should create a component that injects an @Ancestor through viewport directive', (done) => {
tplResolver.setTemplate(MyComp, new Template({
inline: `
<some-directive>
<p *if="true">
<cmp-with-ancestor #child></cmp-with-ancestor>
</p>
</some-directive>`,
directives: [SomeDirective, CompWithAncestor, If]
}));
compiler.compile(MyComp).then((pv) => {
createView(pv);
cd.detectChanges();
var subview = view.viewContainers[0].get(0);
var childComponent = subview.contextWithLocals.get('child');
expect(childComponent.myAncestor).toBeAnInstanceOf(SomeDirective);
done();
})
});
});
// TODO support these tests with DART e.g. with Promise.catch (JS) transpiled to Future.catchError (DART)