refactor(ViewBuilder): cleanup

This commit is contained in:
Victor Berchet
2016-06-14 19:11:30 -07:00
parent 0dbff55bc6
commit 8a54c1a115
10 changed files with 187 additions and 242 deletions
@@ -1089,7 +1089,7 @@ export function main() {
fixture.debugElement.componentInstance.name = null;
fixture.detectChanges();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['user']).not.toBeDefined();
tick();
@@ -1142,7 +1142,7 @@ export function main() {
fixture.debugElement.componentInstance.name = 'show';
fixture.detectChanges();
tick();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['login']).toBeDefined();
@@ -1168,7 +1168,7 @@ export function main() {
fixture.debugElement.componentInstance.name = 'show';
fixture.detectChanges();
tick();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['user']).toBeDefined();
@@ -154,7 +154,7 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
visitElement(ast: ElementAst, parent: CompileElement): any {
var nodeIndex = this.view.nodes.length;
var createRenderNodeExpr: any /** TODO #9100 */;
var createRenderNodeExpr: o.InvokeMethodExpr;
var debugContextExpr = this.view.createMethod.resetDebugInfoExpr(nodeIndex, ast);
if (nodeIndex === 0 && this.view.viewType === ViewType.HOST) {
createRenderNodeExpr = o.THIS_EXPR.callMethod(
@@ -213,7 +213,7 @@ class ViewBuilderVisitor implements TemplateAstVisitor {
compileElement.afterChildren(this.view.nodes.length - nodeIndex - 1);
if (isPresent(compViewExpr)) {
var codeGenContentNodes: any /** TODO #9100 */;
var codeGenContentNodes: o.Expression;
if (this.view.component.type.isHost) {
codeGenContentNodes = ViewProperties.projectableNodes;
} else {
@@ -327,15 +327,12 @@ function _mergeHtmlAndDirectiveAttrs(
directives: CompileDirectiveMetadata[]): string[][] {
var result: {[key: string]: string} = {};
StringMapWrapper.forEach(
declaredHtmlAttrs,
(value: any /** TODO #9100 */, key: any /** TODO #9100 */) => { result[key] = value; });
declaredHtmlAttrs, (value: string, key: string) => { result[key] = value; });
directives.forEach(directiveMeta => {
StringMapWrapper.forEach(
directiveMeta.hostAttributes,
(value: any /** TODO #9100 */, name: any /** TODO #9100 */) => {
var prevValue = result[name];
result[name] = isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;
});
StringMapWrapper.forEach(directiveMeta.hostAttributes, (value: string, name: string) => {
var prevValue = result[name];
result[name] = isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;
});
});
return mapToKeyValueArray(result);
}
@@ -355,16 +352,14 @@ function mergeAttributeValue(attrName: string, attrValue1: string, attrValue2: s
}
function mapToKeyValueArray(data: {[key: string]: string}): string[][] {
var entryArray: any[] /** TODO #9100 */ = [];
StringMapWrapper.forEach(data, (value: any /** TODO #9100 */, name: any /** TODO #9100 */) => {
var entryArray: string[][] = [];
StringMapWrapper.forEach(data, (value: string, name: string) => {
entryArray.push([name, value]);
});
// We need to sort to get a defined output order
// for tests and for caching generated artifacts...
ListWrapper.sort(entryArray, (entry1, entry2) => StringWrapper.compare(entry1[0], entry2[0]));
var keyValueArray: any[] /** TODO #9100 */ = [];
entryArray.forEach((entry) => { keyValueArray.push([entry[0], entry[1]]); });
return keyValueArray;
return entryArray;
}
function createViewTopLevelStmts(view: CompileView, targetStatements: o.Statement[]) {
@@ -398,15 +393,14 @@ function createStaticNodeDebugInfo(node: CompileNode): o.Expression {
var compileElement = node instanceof CompileElement ? node : null;
var providerTokens: o.Expression[] = [];
var componentToken: o.Expression = o.NULL_EXPR;
var varTokenEntries: any[] /** TODO #9100 */ = [];
var varTokenEntries: any[] = [];
if (isPresent(compileElement)) {
providerTokens = compileElement.getProviderTokens();
if (isPresent(compileElement.component)) {
componentToken = createDiTokenExpression(identifierToken(compileElement.component.type));
}
StringMapWrapper.forEach(
compileElement.referenceTokens,
(token: any /** TODO #9100 */, varName: any /** TODO #9100 */) => {
compileElement.referenceTokens, (token: CompileTokenMetadata, varName: string) => {
varTokenEntries.push(
[varName, isPresent(token) ? createDiTokenExpression(token) : o.NULL_EXPR]);
});
@@ -476,8 +470,8 @@ function createViewFactory(
new o.FnParam(ViewConstructorVars.parentInjector.name, o.importType(Identifiers.Injector)),
new o.FnParam(ViewConstructorVars.declarationEl.name, o.importType(Identifiers.AppElement))
];
var initRenderCompTypeStmts: any[] /** TODO #9100 */ = [];
var templateUrlInfo: any /** TODO #9100 */;
var initRenderCompTypeStmts: any[] = [];
var templateUrlInfo: string;
if (view.component.template.templateUrl == view.component.type.moduleUrl) {
templateUrlInfo =
`${view.component.type.moduleUrl} class ${view.component.type.name} - inline template`;
@@ -508,7 +502,7 @@ function createViewFactory(
function generateCreateMethod(view: CompileView): o.Statement[] {
var parentRenderNodeExpr: o.Expression = o.NULL_EXPR;
var parentRenderNodeStmts: any[] /** TODO #9100 */ = [];
var parentRenderNodeStmts: any[] = [];
if (view.viewType === ViewType.COMPONENT) {
parentRenderNodeExpr = ViewProperties.renderer.callMethod(
'createViewRoot', [o.THIS_EXPR.prop('declarationAppElement').prop('nativeElement')]);
@@ -523,7 +517,7 @@ function generateCreateMethod(view: CompileView): o.Statement[] {
} else {
resultExpr = o.NULL_EXPR;
}
return parentRenderNodeStmts.concat(view.createMethod.finish()).concat([
return parentRenderNodeStmts.concat(view.createMethod.finish(), [
o.THIS_EXPR
.callMethod(
'init',
@@ -538,7 +532,7 @@ function generateCreateMethod(view: CompileView): o.Statement[] {
}
function generateDetectChangesMethod(view: CompileView): o.Statement[] {
var stmts: any[] /** TODO #9100 */ = [];
var stmts: any[] = [];
if (view.detectChangesInInputsMethod.isEmpty() && view.updateContentQueriesMethod.isEmpty() &&
view.afterContentLifecycleCallbacksMethod.isEmpty() &&
view.detectChangesRenderPropertiesMethod.isEmpty() &&
@@ -563,7 +557,7 @@ function generateDetectChangesMethod(view: CompileView): o.Statement[] {
stmts.push(new o.IfStmt(o.not(DetectChangesVars.throwOnChange), afterViewStmts));
}
var varStmts: any[] /** TODO #9100 */ = [];
var varStmts: any[] = [];
var readVars = o.findReadVarNames(stmts);
if (SetWrapper.has(readVars, DetectChangesVars.changed.name)) {
varStmts.push(DetectChangesVars.changed.set(o.literal(true)).toDeclStmt(o.BOOL_TYPE));
@@ -22,7 +22,6 @@ class Logger {
}
@Directive({selector: '[message]', inputs: ['message']})
@Injectable()
class MessageDir {
logger: Logger;
@@ -39,7 +38,6 @@ class MessageDir {
<span class="child" [innerHtml]="childBinding"></span>`,
directives: [MessageDir],
})
@Injectable()
class ChildComp {
childBinding: string;
@@ -56,14 +54,12 @@ class ChildComp {
<child-comp class="child-comp-class"></child-comp>`,
directives: [ChildComp, MessageDir],
})
@Injectable()
class ParentComp {
parentBinding: string;
constructor() { this.parentBinding = 'OriginalParent'; }
}
@Directive({selector: 'custom-emitter', outputs: ['myevent']})
@Injectable()
class CustomEmitter {
myevent: EventEmitter<any>;
@@ -76,7 +72,6 @@ class CustomEmitter {
<custom-emitter (myevent)="handleCustom()"></custom-emitter>`,
directives: [CustomEmitter],
})
@Injectable()
class EventsComp {
clicked: boolean;
customed: boolean;
@@ -97,7 +92,6 @@ class EventsComp {
template: `<div class="child" message="child" *ngIf="myBool"><ng-content></ng-content></div>`,
directives: [NgIf, MessageDir],
})
@Injectable()
class ConditionalContentComp {
myBool: boolean = false;
}
@@ -111,7 +105,6 @@ class ConditionalContentComp {
</cond-content-comp>`,
directives: [ConditionalContentComp],
})
@Injectable()
class ConditionalParentComp {
parentBinding: string;
constructor() { this.parentBinding = 'OriginalParent'; }
@@ -126,7 +119,6 @@ class ConditionalParentComp {
</ul>`,
directives: [NgFor, MessageDir],
})
@Injectable()
class UsingFor {
stuff: string[];
constructor() { this.stuff = ['one', 'two', 'three']; }
@@ -387,9 +379,8 @@ export function main() {
tcb.createAsync(ParentComp).then((fixture) => {
fixture.detectChanges();
expect((<Logger>(fixture.debugElement.children[0].inject(Logger))).logs).toEqual([
'parent', 'nestedparent', 'child', 'nestedchild'
]);
expect((<Logger>(fixture.debugElement.children[0].injector.get(Logger))).logs)
.toEqual(['parent', 'nestedparent', 'child', 'nestedchild']);
async.done();
});
@@ -48,7 +48,7 @@ export function main() {
function queryDirs(el: DebugElement, dirType: Type): any {
var nodes = el.queryAllNodes(By.directive(dirType));
return nodes.map(node => node.inject(dirType));
return nodes.map(node => node.injector.get(dirType));
}
function _bindSimpleProp(
File diff suppressed because it is too large Load Diff
@@ -185,7 +185,7 @@ export function main() {
var viewportDirectives =
main.debugElement.children[0]
.childNodes.filter(By.directive(ManualViewportDirective))
.map(de => de.inject(ManualViewportDirective));
.map(de => de.injector.get(ManualViewportDirective));
expect(main.debugElement.nativeElement).toHaveText('(, B)');
viewportDirectives.forEach(d => d.show());
@@ -234,7 +234,7 @@ export function main() {
var viewportDirective =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
expect(main.debugElement.nativeElement)
.toHaveText('OUTER(INNER(INNERINNER(,BC)))');
@@ -263,7 +263,7 @@ export function main() {
var viewportDirective =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
expect(main.debugElement.nativeElement).toHaveText('(, BC)');
@@ -342,13 +342,13 @@ export function main() {
// all.
getAllDebugNodes().forEach((debug) => {
if (debug.providerTokens.indexOf(ManualViewportDirective) !== -1) {
sourceDirective = debug.inject(ManualViewportDirective);
sourceDirective = debug.injector.get(ManualViewportDirective);
}
});
var projectDirective: ProjectDirective =
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0].inject(
ProjectDirective);
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0]
.injector.get(ProjectDirective);
expect(main.debugElement.nativeElement).toHaveText('START()END');
@@ -373,10 +373,10 @@ export function main() {
var sourceDirective: ManualViewportDirective =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
var projectDirective: ProjectDirective =
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0].inject(
ProjectDirective);
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0]
.injector.get(ProjectDirective);
expect(main.debugElement.nativeElement).toHaveText('SIMPLE()START()END');
projectDirective.show(sourceDirective.templateRef);
@@ -405,10 +405,10 @@ export function main() {
var sourceDirective: ManualViewportDirective =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
var projectDirective: ProjectDirective =
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0].inject(
ProjectDirective);
main.debugElement.queryAllNodes(By.directive(ProjectDirective))[0]
.injector.get(ProjectDirective);
expect(main.debugElement.nativeElement).toHaveText('(, B)START()END');
projectDirective.show(sourceDirective.templateRef);
@@ -438,7 +438,7 @@ export function main() {
main.detectChanges();
var manualDirective: ManualViewportDirective =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
expect(main.debugElement.nativeElement).toHaveText('TREE(0:)');
manualDirective.show();
main.detectChanges();
@@ -470,14 +470,14 @@ export function main() {
var tree = main.debugElement.query(By.directive(Tree));
var manualDirective: ManualViewportDirective = tree.queryAllNodes(By.directive(
ManualViewportDirective))[0].inject(ManualViewportDirective);
ManualViewportDirective))[0].injector.get(ManualViewportDirective);
manualDirective.show();
main.detectChanges();
expect(main.debugElement.nativeElement).toHaveText('TREE(0:TREE2(1:))');
var tree2 = main.debugElement.query(By.directive(Tree2));
manualDirective =
tree2.queryAllNodes(By.directive(ManualViewportDirective))[0].inject(
tree2.queryAllNodes(By.directive(ManualViewportDirective))[0].injector.get(
ManualViewportDirective);
manualDirective.show();
main.detectChanges();
@@ -568,12 +568,12 @@ export function main() {
var viewportElement =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[0];
viewportElement.inject(ManualViewportDirective).show();
viewportElement.injector.get(ManualViewportDirective).show();
expect(main.debugElement.nativeElement).toHaveText('MAIN(FIRST())');
viewportElement =
main.debugElement.queryAllNodes(By.directive(ManualViewportDirective))[1];
viewportElement.inject(ManualViewportDirective).show();
viewportElement.injector.get(ManualViewportDirective).show();
expect(main.debugElement.nativeElement).toHaveText('MAIN(FIRST(SECOND(a)))');
async.done();
@@ -639,7 +639,7 @@ export function main() {
var viewViewportDir =
conditionalComp.queryAllNodes(By.directive(ManualViewportDirective))[0]
.inject(ManualViewportDirective);
.injector.get(ManualViewportDirective);
expect(main.debugElement.nativeElement).toHaveText('(, D)');
expect(main.debugElement.nativeElement).toHaveText('(, D)');
@@ -5,7 +5,7 @@ import {AsyncTestCompleter} from '@angular/core/testing/testing_internal';
import {isPresent, stringify} from '../../src/facade/lang';
import {ObservableWrapper} from '../../src/facade/async';
import {Component, Directive, Injectable, Optional, TemplateRef, Query, QueryList, ViewQuery, ContentChildren, ViewChildren, ContentChild, ViewChild, AfterContentInit, AfterViewInit, AfterContentChecked, AfterViewChecked} from '@angular/core';
import {Component, Directive, TemplateRef, Query, QueryList, ViewQuery, ContentChildren, ViewChildren, ContentChild, ViewChild, AfterContentInit, AfterViewInit, AfterContentChecked, AfterViewChecked} from '@angular/core';
import {NgIf, NgFor} from '@angular/common';
import {asNativeElements, ViewContainerRef} from '@angular/core';
@@ -275,7 +275,7 @@ export function main() {
var template = '<needs-tpl><template><div>light</div></template></needs-tpl>';
tcb.overrideTemplate(MyComp0, template).createAsync(MyComp0).then((view) => {
view.detectChanges();
var needsTpl: NeedsTpl = view.debugElement.children[0].inject(NeedsTpl);
var needsTpl: NeedsTpl = view.debugElement.children[0].injector.get(NeedsTpl);
expect(needsTpl.vc.createEmbeddedView(needsTpl.query.first).rootNodes[0])
.toHaveText('light');
@@ -294,7 +294,8 @@ export function main() {
'<needs-named-tpl><template #tpl><div>light</div></template></needs-named-tpl>';
tcb.overrideTemplate(MyComp0, template).createAsync(MyComp0).then((view) => {
view.detectChanges();
var needsTpl: NeedsNamedTpl = view.debugElement.children[0].inject(NeedsNamedTpl);
var needsTpl: NeedsNamedTpl =
view.debugElement.children[0].injector.get(NeedsNamedTpl);
expect(needsTpl.vc.createEmbeddedView(needsTpl.contentTpl).rootNodes[0])
.toHaveText('light');
expect(needsTpl.vc.createEmbeddedView(needsTpl.viewTpl).rootNodes[0])
@@ -317,7 +318,7 @@ export function main() {
view.detectChanges();
var comp: NeedsContentChildrenWithRead =
view.debugElement.children[0].inject(NeedsContentChildrenWithRead);
view.debugElement.children[0].injector.get(NeedsContentChildrenWithRead);
expect(comp.textDirChildren.map(textDirective => textDirective.text)).toEqual([
'ca', 'cb'
]);
@@ -337,7 +338,7 @@ export function main() {
view.detectChanges();
var comp: NeedsContentChildWithRead =
view.debugElement.children[0].inject(NeedsContentChildWithRead);
view.debugElement.children[0].injector.get(NeedsContentChildWithRead);
expect(comp.textDirChild.text).toEqual('ca');
async.done();
@@ -354,7 +355,7 @@ export function main() {
view.detectChanges();
var comp: NeedsViewChildWithRead =
view.debugElement.children[0].inject(NeedsViewChildWithRead);
view.debugElement.children[0].injector.get(NeedsViewChildWithRead);
expect(comp.textDirChild.text).toEqual('va');
async.done();
@@ -371,7 +372,7 @@ export function main() {
view.detectChanges();
var comp: NeedsViewChildrenWithRead =
view.debugElement.children[0].inject(NeedsViewChildrenWithRead);
view.debugElement.children[0].injector.get(NeedsViewChildrenWithRead);
expect(comp.textDirChildren.map(textDirective => textDirective.text)).toEqual([
'va', 'vb'
]);
@@ -391,7 +392,7 @@ export function main() {
view.detectChanges();
var comp: NeedsViewContainerWithRead =
view.debugElement.children[0].inject(NeedsViewContainerWithRead);
view.debugElement.children[0].injector.get(NeedsViewContainerWithRead);
comp.createView();
expect(view.debugElement.children[0].nativeElement).toHaveText('hello');
@@ -804,7 +805,6 @@ export function main() {
}
@Directive({selector: '[text]', inputs: ['text'], exportAs: 'textDir'})
@Injectable()
class TextDirective {
text: string;
constructor() {}
@@ -890,7 +890,6 @@ class NeedsStaticContentAndViewChild {
}
@Directive({selector: '[dir]'})
@Injectable()
class InertDirective {
constructor() {}
}
@@ -900,7 +899,6 @@ class InertDirective {
directives: [NgFor, TextDirective],
template: '<div text="ignoreme"></div><b *ngFor="let dir of query">{{dir.text}}|</b>'
})
@Injectable()
class NeedsQuery {
query: QueryList<TextDirective>;
constructor(@Query(TextDirective) query: QueryList<TextDirective>) { this.query = query; }
@@ -919,7 +917,6 @@ class NeedsFourQueries {
directives: [NgFor],
template: '<ng-content></ng-content><div *ngFor="let dir of query">{{dir.text}}|</div>'
})
@Injectable()
class NeedsQueryDesc {
query: QueryList<TextDirective>;
constructor(@Query(TextDirective, {descendants: true}) query: QueryList<TextDirective>) {
@@ -928,7 +925,6 @@ class NeedsQueryDesc {
}
@Component({selector: 'needs-query-by-ref-binding', directives: [], template: '<ng-content>'})
@Injectable()
class NeedsQueryByLabel {
query: QueryList<any>;
constructor(@Query('textLabel', {descendants: true}) query: QueryList<any>) {
@@ -941,14 +937,12 @@ class NeedsQueryByLabel {
directives: [],
template: '<div #textLabel>text</div>'
})
@Injectable()
class NeedsViewQueryByLabel {
query: QueryList<any>;
constructor(@ViewQuery('textLabel') query: QueryList<any>) { this.query = query; }
}
@Component({selector: 'needs-query-by-ref-bindings', directives: [], template: '<ng-content>'})
@Injectable()
class NeedsQueryByTwoLabels {
query: QueryList<any>;
constructor(@Query('textLabel1,textLabel2', {descendants: true}) query: QueryList<any>) {
@@ -961,7 +955,6 @@ class NeedsQueryByTwoLabels {
directives: [NgFor],
template: '<div *ngFor="let dir of query">{{dir.text}}|</div><ng-content></ng-content>'
})
@Injectable()
class NeedsQueryAndProject {
query: QueryList<TextDirective>;
constructor(@Query(TextDirective) query: QueryList<TextDirective>) { this.query = query; }
@@ -973,7 +966,6 @@ class NeedsQueryAndProject {
template: '<div text="1"><div text="2"></div></div>' +
'<div text="3"></div><div text="4"></div>'
})
@Injectable()
class NeedsViewQuery {
query: QueryList<TextDirective>;
constructor(@ViewQuery(TextDirective) query: QueryList<TextDirective>) { this.query = query; }
@@ -984,7 +976,6 @@ class NeedsViewQuery {
directives: [NgIf, TextDirective],
template: '<div *ngIf="show" text="1"></div>'
})
@Injectable()
class NeedsViewQueryIf {
show: boolean;
query: QueryList<TextDirective>;
@@ -1000,7 +991,6 @@ class NeedsViewQueryIf {
directives: [NgIf, InertDirective, TextDirective],
template: '<div text="1"><div *ngIf="show"><div dir></div></div></div>'
})
@Injectable()
class NeedsViewQueryNestedIf {
show: boolean;
query: QueryList<TextDirective>;
@@ -1017,7 +1007,6 @@ class NeedsViewQueryNestedIf {
'<div *ngFor="let i of list" [text]="i"></div>' +
'<div text="4"></div>'
})
@Injectable()
class NeedsViewQueryOrder {
query: QueryList<TextDirective>;
list: string[];
@@ -1034,7 +1023,6 @@ class NeedsViewQueryOrder {
'<div *ngFor="let i of list" [text]="i"></div>' +
'<div text="4"></div></div>'
})
@Injectable()
class NeedsViewQueryOrderWithParent {
query: QueryList<TextDirective>;
list: string[];
@@ -1143,7 +1131,6 @@ class HasNullQueryCondition {
],
template: ''
})
@Injectable()
class MyComp0 {
shouldShow: boolean;
list: any /** TODO #9100 */;
@@ -1154,6 +1141,5 @@ class MyComp0 {
}
@Component({selector: 'my-comp', directives: [HasNullQueryCondition], template: ''})
@Injectable()
class MyCompBroken0 {
}
@@ -24,7 +24,6 @@ export function main() {
}
@Component({selector: 'my-comp', directives: []})
@Injectable()
class SecuredComponent {
ctxProp: string;
constructor() { this.ctxProp = 'some value'; }
File diff suppressed because it is too large Load Diff
@@ -1201,7 +1201,7 @@ export function main() {
fixture.debugElement.componentInstance.name = null;
fixture.detectChanges();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['user']).not.toBeDefined();
tick();
@@ -1257,7 +1257,7 @@ export function main() {
fixture.debugElement.componentInstance.name = 'show';
fixture.detectChanges();
tick();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['login']).toBeDefined();
@@ -1283,7 +1283,7 @@ export function main() {
fixture.debugElement.componentInstance.name = 'show';
fixture.detectChanges();
tick();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
expect(form.controls['user']).toBeDefined();
@@ -1348,7 +1348,7 @@ export function main() {
tick();
fixture.debugElement.componentInstance.name = 'Nancy';
fixture.detectChanges();
var form = fixture.debugElement.children[0].inject(NgForm);
var form = fixture.debugElement.children[0].injector.get(NgForm);
tick();
expect(form.value).toEqual({first: 'Nancy'});
@@ -1387,7 +1387,7 @@ export function main() {
tick();
fixture.debugElement.componentInstance.data = 'some data';
fixture.detectChanges();
const form = fixture.debugElement.children[0].inject(NgForm);
const form = fixture.debugElement.children[0].injector.get(NgForm);
tick();
expect(form.value).toEqual({two: 'some data'});