build(bazel): Turning on strictPropertyInitialization for Angular. (#24572)
All errors for existing fields have been detected and suppressed with a `!` assertion. Issue/24571 is tracking proper clean up of those instances. One-line change required in ivy/compilation.ts, because it appears that the new syntax causes tsickle emitted node to no longer track their original sourceFiles. PR Close #24572
This commit is contained in:
@ -11,7 +11,8 @@ import {Component, ContentChild, Directive, Input} from '@angular/core';
|
||||
|
||||
@Directive({selector: 'pane'})
|
||||
export class Pane {
|
||||
@Input() id: string;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@Input() id !: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@ -21,7 +22,8 @@ export class Pane {
|
||||
`
|
||||
})
|
||||
export class Tab {
|
||||
@ContentChild(Pane) pane: Pane;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ContentChild(Pane) pane !: Pane;
|
||||
}
|
||||
|
||||
@Component({
|
||||
|
@ -15,7 +15,8 @@ class ChildDirective {
|
||||
|
||||
@Directive({selector: 'someDir'})
|
||||
class SomeDir implements AfterContentInit {
|
||||
@ContentChild(ChildDirective) contentChild: ChildDirective;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ContentChild(ChildDirective) contentChild !: ChildDirective;
|
||||
|
||||
ngAfterContentInit() {
|
||||
// contentChild is set
|
||||
|
@ -11,7 +11,8 @@ import {Component, ContentChildren, Directive, Input, QueryList} from '@angular/
|
||||
|
||||
@Directive({selector: 'pane'})
|
||||
export class Pane {
|
||||
@Input() id: string;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@Input() id !: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@ -22,8 +23,10 @@ export class Pane {
|
||||
`
|
||||
})
|
||||
export class Tab {
|
||||
@ContentChildren(Pane) topLevelPanes: QueryList<Pane>;
|
||||
@ContentChildren(Pane, {descendants: true}) arbitraryNestedPanes: QueryList<Pane>;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ContentChildren(Pane) topLevelPanes !: QueryList<Pane>;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ContentChildren(Pane, {descendants: true}) arbitraryNestedPanes !: QueryList<Pane>;
|
||||
|
||||
get serializedPanes(): string {
|
||||
return this.topLevelPanes ? this.topLevelPanes.map(p => p.id).join(', ') : '';
|
||||
|
@ -15,7 +15,8 @@ class ChildDirective {
|
||||
|
||||
@Directive({selector: 'someDir'})
|
||||
class SomeDir implements AfterContentInit {
|
||||
@ContentChildren(ChildDirective) contentChildren: QueryList<ChildDirective>;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ContentChildren(ChildDirective) contentChildren !: QueryList<ChildDirective>;
|
||||
|
||||
ngAfterContentInit() {
|
||||
// contentChildren is set
|
||||
|
@ -55,7 +55,9 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from
|
||||
describe('ClassProvider', () => {
|
||||
it('works', () => {
|
||||
// #docregion ClassProvider
|
||||
abstract class Shape { name: string; }
|
||||
abstract class Shape { // TODO(issue/24571): remove '!'.
|
||||
name !: string;
|
||||
}
|
||||
|
||||
class Square extends Shape {
|
||||
name = 'square';
|
||||
@ -92,7 +94,9 @@ import {Injectable, InjectionToken, Injector, Optional, ReflectiveInjector} from
|
||||
describe('StaticClassProvider', () => {
|
||||
it('works', () => {
|
||||
// #docregion StaticClassProvider
|
||||
abstract class Shape { name: string; }
|
||||
abstract class Shape { // TODO(issue/24571): remove '!'.
|
||||
name !: string;
|
||||
}
|
||||
|
||||
class Square extends Shape {
|
||||
name = 'square';
|
||||
|
@ -11,7 +11,8 @@ import {Component, Directive, Input, ViewChild} from '@angular/core';
|
||||
|
||||
@Directive({selector: 'pane'})
|
||||
export class Pane {
|
||||
@Input() id: string;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@Input() id !: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
|
@ -15,7 +15,8 @@ class ChildDirective {
|
||||
|
||||
@Component({selector: 'someCmp', templateUrl: 'someCmp.html'})
|
||||
class SomeCmp implements AfterViewInit {
|
||||
@ViewChild(ChildDirective) child: ChildDirective;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ViewChild(ChildDirective) child !: ChildDirective;
|
||||
|
||||
ngAfterViewInit() {
|
||||
// child is set
|
||||
|
@ -11,7 +11,8 @@ import {AfterViewInit, Component, Directive, Input, QueryList, ViewChildren} fro
|
||||
|
||||
@Directive({selector: 'pane'})
|
||||
export class Pane {
|
||||
@Input() id: string;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@Input() id !: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@ -27,7 +28,8 @@ export class Pane {
|
||||
`,
|
||||
})
|
||||
export class ViewChildrenComp implements AfterViewInit {
|
||||
@ViewChildren(Pane) panes: QueryList<Pane>;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ViewChildren(Pane) panes !: QueryList<Pane>;
|
||||
serializedPanes: string = '';
|
||||
|
||||
shouldShow = false;
|
||||
|
@ -15,7 +15,8 @@ class ChildDirective {
|
||||
|
||||
@Component({selector: 'someCmp', templateUrl: 'someCmp.html'})
|
||||
class SomeCmp implements AfterViewInit {
|
||||
@ViewChildren(ChildDirective) viewChildren: QueryList<ChildDirective>;
|
||||
// TODO(issue/24571): remove '!'.
|
||||
@ViewChildren(ChildDirective) viewChildren !: QueryList<ChildDirective>;
|
||||
|
||||
ngAfterViewInit() {
|
||||
// viewChildren is set
|
||||
|
Reference in New Issue
Block a user