test(compiler): update examples and compiler tests (#30626)

PR Close #30626
This commit is contained in:
Kara Erickson 2019-05-22 20:42:34 -07:00 committed by Jason Aden
parent dcdecfa9a8
commit 214ae0ea4c
10 changed files with 49 additions and 43 deletions

View File

@ -1714,7 +1714,7 @@ describe('compiler compliance', () => {
\`
})
export class ContentQueryComponent {
@ContentChild(SomeDirective) someDir: SomeDirective;
@ContentChild(SomeDirective, {static: false}) someDir: SomeDirective;
@ContentChildren(SomeDirective) someDirList !: QueryList<SomeDirective>;
}
@ -1786,7 +1786,7 @@ describe('compiler compliance', () => {
\`
})
export class ContentQueryComponent {
@ContentChild('myRef') myRef: any;
@ContentChild('myRef', {static: false}) myRef: any;
@ContentChildren('myRef1, myRef2, myRef3') myRefs: QueryList<any>;
}
@NgModule({declarations: [ContentQueryComponent]})
@ -1911,9 +1911,9 @@ describe('compiler compliance', () => {
\`
})
export class ContentQueryComponent {
@ContentChild('myRef', {read: TemplateRef}) myRef: TemplateRef;
@ContentChild('myRef', {read: TemplateRef, static: false}) myRef: TemplateRef;
@ContentChildren('myRef1, myRef2, myRef3', {read: ElementRef}) myRefs: QueryList<ElementRef>;
@ContentChild(SomeDirective, {read: ElementRef}) someDir: ElementRef;
@ContentChild(SomeDirective, {read: ElementRef, static: false}) someDir: ElementRef;
@ContentChildren(SomeDirective, {read: TemplateRef}) someDirs: QueryList<TemplateRef>;
}
@NgModule({declarations: [ContentQueryComponent]})
@ -1966,7 +1966,7 @@ describe('compiler compliance', () => {
\`
})
export class ContentQueryComponent {
@Input() @ContentChild('foo') foo: any;
@Input() @ContentChild('foo', {static: false}) foo: any;
}
@Component({
@ -3139,7 +3139,7 @@ describe('compiler compliance', () => {
'spec.ts': `
import {Component, NgModule, ContentChild} from '@angular/core';
export class BaseClass {
@ContentChild('something') something: any;
@ContentChild('something', {static: false}) something: any;
}
@Component({

View File

@ -1536,10 +1536,10 @@ describe('ngtsc behavioral tests', () => {
}
})
class FooCmp {
@ContentChild('bar', {read: TemplateRef}) child: any;
@ContentChild('bar', {read: TemplateRef, static: false}) child: any;
@ContentChildren(TemplateRef) children: any;
get aview(): any { return null; }
@ViewChild('accessor') set aview(value: any) {}
@ViewChild('accessor', {static: false}) set aview(value: any) {}
}
`);
@ -1568,7 +1568,7 @@ describe('ngtsc behavioral tests', () => {
}
})
class FooCmp {
@ContentChild('bar', {read: TemplateRef}) child: any;
@ContentChild('bar', {read: TemplateRef, static: false}) child: any;
@ContentChildren(TemplateRef) children: any;
get aview(): any { return null; }
@ViewChild('accessor') set aview(value: any) {}
@ -1600,11 +1600,11 @@ describe('ngtsc behavioral tests', () => {
template: '<div #foo></div>',
})
class FooCmp {
@ContentChild(forwardRef(() => TemplateRef)) child: any;
@ContentChild(forwardRef(() => TemplateRef), {static: false}) child: any;
@ContentChild(forwardRef(function() { return ViewContainerRef; })) child2: any;
@ContentChild(forwardRef(function() { return ViewContainerRef; }), {static: false}) child2: any;
@ContentChild((forwardRef((function() { return 'parens'; }) as any))) childInParens: any;
@ContentChild((forwardRef((function() { return 'parens'; }) as any)), {static: false}) childInParens: any;
}
`);

View File

@ -27,10 +27,11 @@ import * as core from '@angular/core';
typeExtends<compilerCore.Query, core.Query>();
typeExtends<core.Query, compilerCore.Query>();
compareRuntimeShape(
new core.ContentChild('someSelector'), compilerCore.createContentChild('someSelector'));
new core.ContentChild('someSelector', {static: false}),
compilerCore.createContentChild('someSelector', {static: false}));
compareRuntimeShape(
new core.ContentChild('someSelector', {read: 'someRead'}),
compilerCore.createContentChild('someSelector', {read: 'someRead'}));
new core.ContentChild('someSelector', {read: 'someRead', static: false}),
compilerCore.createContentChild('someSelector', {read: 'someRead', static: false}));
compareRuntimeShape(
new core.ContentChildren('someSelector'),
compilerCore.createContentChildren('someSelector'));
@ -39,10 +40,11 @@ import * as core from '@angular/core';
compilerCore.createContentChildren(
'someSelector', {read: 'someRead', descendants: false}));
compareRuntimeShape(
new core.ViewChild('someSelector'), compilerCore.createViewChild('someSelector'));
new core.ViewChild('someSelector', {static: false}),
compilerCore.createViewChild('someSelector', {static: false}));
compareRuntimeShape(
new core.ViewChild('someSelector', {read: 'someRead'}),
compilerCore.createViewChild('someSelector', {read: 'someRead'}));
new core.ViewChild('someSelector', {read: 'someRead', static: false}),
compilerCore.createViewChild('someSelector', {read: 'someRead', static: false}));
compareRuntimeShape(
new core.ViewChildren('someSelector'), compilerCore.createViewChildren('someSelector'));
compareRuntimeShape(

View File

@ -68,15 +68,15 @@ class SomeDirectiveWithViewChildren {
c: any;
}
@Directive({selector: 'someDirective', queries: {'c': new ContentChild('c')}})
@Directive({selector: 'someDirective', queries: {'c': new ContentChild('c', {static: false})}})
class SomeDirectiveWithContentChild {
@ContentChild('a') a: any;
@ContentChild('a', {static: false}) a: any;
c: any;
}
@Directive({selector: 'someDirective', queries: {'c': new ViewChild('c')}})
@Directive({selector: 'someDirective', queries: {'c': new ViewChild('c', {static: false})}})
class SomeDirectiveWithViewChild {
@ViewChild('a') a: any;
@ViewChild('a', {static: false}) a: any;
c: any;
}
@ -408,37 +408,41 @@ class SomeDirectiveWithoutMetadata {}
it('should append ContentChild', () => {
const directiveMetadata = resolver.resolve(SomeDirectiveWithContentChild);
expect(directiveMetadata.queries)
.toEqual({'c': new ContentChild('c'), 'a': new ContentChild('a')});
expect(directiveMetadata.queries).toEqual({
'c': new ContentChild('c', {static: false}),
'a': new ContentChild('a', {static: false})
});
});
it('should append ViewChild', () => {
const directiveMetadata = resolver.resolve(SomeDirectiveWithViewChild);
expect(directiveMetadata.queries)
.toEqual({'c': new ViewChild('c'), 'a': new ViewChild('a')});
expect(directiveMetadata.queries).toEqual({
'c': new ViewChild('c', {static: false}),
'a': new ViewChild('a', {static: false})
});
});
it('should support inheriting queries', () => {
@Directive({selector: 'p'})
class Parent {
@ContentChild('p1')
@ContentChild('p1', {static: false})
p1: any;
@ContentChild('p21')
@ContentChild('p21', {static: false})
p2: any;
}
class Child extends Parent {
@ContentChild('p22')
@ContentChild('p22', {static: false})
p2: any;
@ContentChild('p3')
@ContentChild('p3', {static: false})
p3: any;
}
const directiveMetadata = resolver.resolve(Child);
expect(directiveMetadata.queries).toEqual({
'p1': new ContentChild('p1'),
'p2': new ContentChild('p22'),
'p3': new ContentChild('p3')
'p1': new ContentChild('p1', {static: false}),
'p2': new ContentChild('p22', {static: false}),
'p3': new ContentChild('p3', {static: false})
});
});
});

View File

@ -295,7 +295,7 @@ ivyEnabled && describe('render3 jit', () => {
it('should compile ContentChild query with string predicate on a directive', () => {
@Directive({selector: '[test]'})
class TestDirective {
@ContentChild('foo') foo: ElementRef|undefined;
@ContentChild('foo', {static: false}) foo: ElementRef|undefined;
}
expect((TestDirective as any).ngDirectiveDef.contentQueries).not.toBeNull();
@ -317,7 +317,7 @@ ivyEnabled && describe('render3 jit', () => {
@Directive({selector: '[test]'})
class TestDirective {
@ContentChild(SomeDir) dir: SomeDir|undefined;
@ContentChild(SomeDir, {static: false}) dir: SomeDir|undefined;
}
expect((TestDirective as any).ngDirectiveDef.contentQueries).not.toBeNull();
@ -326,7 +326,7 @@ ivyEnabled && describe('render3 jit', () => {
it('should compile ViewChild query on a component', () => {
@Component({selector: 'test', template: ''})
class TestComponent {
@ViewChild('foo') foo: ElementRef|undefined;
@ViewChild('foo', {static: false}) foo: ElementRef|undefined;
}
expect((TestComponent as any).ngComponentDef.foo).not.toBeNull();

View File

@ -62,7 +62,7 @@ export class NgIfThenElse implements OnInit {
@ViewChild('primaryBlock', {static: true})
primaryBlock: TemplateRef<any>|null = null;
@ViewChild('secondaryBlock')
@ViewChild('secondaryBlock', {static: true})
secondaryBlock: TemplateRef<any>|null = null;
switchPrimary() {

View File

@ -23,7 +23,7 @@ export class Pane {
})
export class Tab {
// TODO(issue/24571): remove '!'.
@ContentChild(Pane) pane !: Pane;
@ContentChild(Pane, {static: false}) pane !: Pane;
}
@Component({

View File

@ -15,7 +15,7 @@ class ChildDirective {
@Directive({selector: 'someDir'})
class SomeDir implements AfterContentInit {
@ContentChild(ChildDirective) contentChild !: ChildDirective;
@ContentChild(ChildDirective, {static: false}) contentChild !: ChildDirective;
ngAfterContentInit() {
// contentChild is set

View File

@ -27,7 +27,7 @@ export class Pane {
`,
})
export class ViewChildComp {
@ViewChild(Pane)
@ViewChild(Pane, {static: false})
set pane(v: Pane) {
setTimeout(() => { this.selectedPane = v.id; }, 0);
}

View File

@ -16,7 +16,7 @@ class ChildDirective {
@Component({selector: 'someCmp', templateUrl: 'someCmp.html'})
class SomeCmp implements AfterViewInit {
// TODO(issue/24571): remove '!'.
@ViewChild(ChildDirective) child !: ChildDirective;
@ViewChild(ChildDirective, {static: false}) child !: ChildDirective;
ngAfterViewInit() {
// child is set