Skip to content

Commit 3c27481

Browse files
committed
feat(settings): add strictPropertyInitialization to compiler options
- update typescript configuration - eliminate strictPropertyInitialization violations addresses #536
1 parent c14b760 commit 3c27481

File tree

12 files changed

+29
-27
lines changed

12 files changed

+29
-27
lines changed

projects/angular-ngrx-material-starter/src/app/app/app.component.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ export class AppComponent implements OnInit {
4444
{ link: 'settings', label: 'anms.menu.settings' }
4545
];
4646

47-
isAuthenticated$: Observable<boolean>;
48-
stickyHeader$: Observable<boolean>;
49-
language$: Observable<string>;
50-
theme$: Observable<string>;
47+
isAuthenticated$: Observable<boolean> | undefined;
48+
stickyHeader$: Observable<boolean> | undefined;
49+
language$: Observable<string> | undefined;
50+
theme$: Observable<string> | undefined;
5151

5252
constructor(
5353
private store: Store,

projects/angular-ngrx-material-starter/src/app/features/examples/crud/components/crud.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export class CrudComponent {
2525
books$: Observable<Book[]> = this.store.pipe(select(selectAllBooks));
2626
selectedBook$: Observable<Book | undefined> = this.store.pipe(select(selectSelectedBook));
2727

28-
isEditing: boolean;
28+
isEditing = false;
2929

3030
constructor(
3131
public store: Store<State>,

projects/angular-ngrx-material-starter/src/app/features/examples/examples/examples.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { State } from '../examples.state';
1717
changeDetection: ChangeDetectionStrategy.OnPush
1818
})
1919
export class ExamplesComponent implements OnInit {
20-
isAuthenticated$: Observable<boolean>;
20+
isAuthenticated$: Observable<boolean> | undefined;
2121

2222
examples = [
2323
{ link: 'todos', label: 'anms.examples.menu.todos' },

projects/angular-ngrx-material-starter/src/app/features/examples/form/components/form.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export class FormComponent implements OnInit {
4141
rating: [0, Validators.required]
4242
});
4343

44-
formValueChanges$: Observable<Form>;
44+
formValueChanges$: Observable<Form> | undefined;
4545

4646
constructor(
4747
private fb: FormBuilder,

projects/angular-ngrx-material-starter/src/app/features/examples/simple-state-management/components/user.component.html

+9-9
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ <h2 *ngIf="isEdit.value">{{'anms.examples.simple-state-management.form.edit.titl
3939
"
4040
formControlName="username"
4141
/>
42-
<mat-error *ngIf="userForm.get('username')?.hasError('minlength')">
43-
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm.get('username')?.errors?.minlength.requiredLength} }}
42+
<mat-error *ngIf="userForm?.get('username')?.hasError('minlength')">
43+
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm?.get('username')?.errors?.minlength.requiredLength} }}
4444
</mat-error>
45-
<mat-error *ngIf="userForm.get('username')?.hasError('required')">
45+
<mat-error *ngIf="userForm?.get('username')?.hasError('required')">
4646
{{'anms.examples.simple-state-management.validator.required' | translate}}
4747
</mat-error>
4848
</mat-form-field>
@@ -54,10 +54,10 @@ <h2 *ngIf="isEdit.value">{{'anms.examples.simple-state-management.form.edit.titl
5454
"
5555
formControlName="name"
5656
/>
57-
<mat-error *ngIf="userForm.get('name')?.hasError('minlength')">
58-
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm.get('name')?.errors?.minlength.requiredLength} }}
57+
<mat-error *ngIf="userForm?.get('name')?.hasError('minlength')">
58+
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm?.get('name')?.errors?.minlength.requiredLength} }}
5959
</mat-error>
60-
<mat-error *ngIf="userForm.get('name')?.hasError('required')">
60+
<mat-error *ngIf="userForm?.get('name')?.hasError('required')">
6161
{{'anms.examples.simple-state-management.validator.required' | translate}}
6262
</mat-error>
6363
</mat-form-field>
@@ -69,10 +69,10 @@ <h2 *ngIf="isEdit.value">{{'anms.examples.simple-state-management.form.edit.titl
6969
"
7070
formControlName="surname"
7171
/>
72-
<mat-error *ngIf="userForm.get('surname')?.hasError('minlength')">
73-
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm.get('surname')?.errors?.minlength.requiredLength} }}
72+
<mat-error *ngIf="userForm?.get('surname')?.hasError('minlength')">
73+
{{'anms.examples.simple-state-management.validator.minlength' | translate:{minlength: userForm?.get('surname')?.errors?.minlength.requiredLength} }}
7474
</mat-error>
75-
<mat-error *ngIf="userForm.get('surname')?.hasError('required')">
75+
<mat-error *ngIf="userForm?.get('surname')?.hasError('required')">
7676
{{'anms.examples.simple-state-management.validator.required' | translate}}
7777
</mat-error>
7878
</mat-form-field>

projects/angular-ngrx-material-starter/src/app/features/examples/simple-state-management/components/user.component.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import { User, UserService } from '../user.service';
2020
})
2121
export class UserComponent implements OnInit {
2222
routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;
23-
userForm: FormGroup;
24-
users$: Observable<User[]>;
23+
userForm: FormGroup | undefined;
24+
users$: Observable<User[]> | undefined;
2525
isEdit$: Observable<{ value: boolean }> | undefined;
2626

2727
constructor(private fb: FormBuilder, private userService: UserService) {}
@@ -47,11 +47,11 @@ export class UserComponent implements OnInit {
4747
}
4848

4949
editUser(user: User) {
50-
this.userForm.patchValue({ ...user });
50+
this.userForm?.patchValue({ ...user });
5151
}
5252

5353
onSubmit(userFormRef: FormGroupDirective) {
54-
if (this.userForm.valid) {
54+
if (this.userForm?.valid) {
5555
const data = this.userForm.getRawValue();
5656
if (data.id && data.id.length) {
5757
this.userService.updateUser(data);

projects/angular-ngrx-material-starter/src/app/features/examples/stock-market/components/stock-market-container.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { State } from '../../examples.state';
1818
})
1919
export class StockMarketContainerComponent implements OnInit {
2020
routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;
21-
stocks$: Observable<StockMarketState>;
21+
stocks$: Observable<StockMarketState> | undefined;
2222

2323
constructor(public store: Store<State>) {}
2424

projects/angular-ngrx-material-starter/src/app/features/examples/todos/components/todos-container.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import { selectTodos, selectRemoveDoneTodosDisabled } from '../todos.selectors';
2323
})
2424
export class TodosContainerComponent implements OnInit {
2525
routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;
26-
todos$: Observable<Todo[]>;
27-
filter$: Observable<TodosFilter>;
28-
removeDoneDisabled$: Observable<boolean>;
26+
todos$: Observable<Todo[]> | undefined;
27+
filter$: Observable<TodosFilter> | undefined;
28+
removeDoneDisabled$: Observable<boolean> | undefined;
2929
newTodo = '';
3030

3131
constructor(

projects/angular-ngrx-material-starter/src/app/features/settings/settings/settings-container.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { selectSettings } from '../../../core/settings/settings.selectors';
2525
})
2626
export class SettingsContainerComponent implements OnInit {
2727
routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;
28-
settings$: Observable<SettingsState>;
28+
settings$: Observable<SettingsState> | undefined;
2929

3030
themes = [
3131
{ value: 'DEFAULT-THEME', label: 'blue' },

projects/angular-ngrx-material-starter/src/app/shared/big-input/big-input/big-input.component.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
88
})
99
export class BigInputComponent {
1010
@Input()
11-
placeholder: string;
11+
placeholder = '';
1212

1313
@Input()
1414
value = '';
15+
1516
@Input()
1617
disabled = false;
1718

projects/angular-ngrx-material-starter/src/app/shared/rtl-support/rtl-support.directive.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Subscription } from 'rxjs';
77
selector: '[rtl]'
88
})
99
export class RtlSupportDirective implements OnInit, OnDestroy {
10-
private subscription: Subscription;
10+
private subscription: Subscription | undefined;
1111
constructor(private el: ElementRef, public translate: TranslateService) {
1212
el.nativeElement.style.textAlign =
1313
translate.currentLang === 'he' ? 'right' : 'left';

tsconfig.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"importHelpers": true,
1212
"strictNullChecks": true,
1313
"noImplicitAny": true,
14+
"strictPropertyInitialization": true,
1415
"module": "esnext",
1516
"target": "es2015",
1617
"typeRoots": ["node_modules/@types"],

0 commit comments

Comments
 (0)