Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0f0e8cf

Browse files
authored
Merge pull request #1581 from rx-angular/fix-prop-init
fix(template): fix properties not initialized
2 parents ed94f60 + fbf90f3 commit 0f0e8cf

File tree

5 files changed

+69
-54
lines changed

5 files changed

+69
-54
lines changed

libs/template/for/src/lib/for.directive.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import {
22
ChangeDetectorRef,
33
Directive,
44
DoCheck,
5-
ElementRef,
65
EmbeddedViewRef,
76
ErrorHandler,
7+
inject,
88
Input,
99
IterableDiffers,
1010
NgIterable,
@@ -82,6 +82,22 @@ declare const ngDevMode: boolean;
8282
export class RxFor<T, U extends NgIterable<T> = NgIterable<T>>
8383
implements OnInit, DoCheck, OnDestroy
8484
{
85+
/** @internal */
86+
private iterableDiffers = inject(IterableDiffers);
87+
/** @internal */
88+
private cdRef = inject(ChangeDetectorRef);
89+
/** @internal */
90+
private ngZone = inject(NgZone);
91+
/** @internal */
92+
private templateRef =
93+
inject<TemplateRef<RxForViewContext<T, U>>>(TemplateRef);
94+
/** @internal */
95+
private viewContainerRef = inject(ViewContainerRef);
96+
/** @internal */
97+
private strategyProvider = inject(RxStrategyProvider);
98+
/** @internal */
99+
private errorHandler = inject(ErrorHandler);
100+
85101
/** @internal */
86102
private staticValue?: U;
87103
/** @internal */
@@ -383,18 +399,6 @@ export class RxFor<T, U extends NgIterable<T> = NgIterable<T>>
383399
return this._template || this.templateRef;
384400
}
385401

386-
/** @internal */
387-
constructor(
388-
private iterableDiffers: IterableDiffers,
389-
private cdRef: ChangeDetectorRef,
390-
private ngZone: NgZone,
391-
private eRef: ElementRef,
392-
private templateRef: TemplateRef<RxForViewContext<T, U>>,
393-
private readonly viewContainerRef: ViewContainerRef,
394-
private strategyProvider: RxStrategyProvider,
395-
private errorHandler: ErrorHandler
396-
) {}
397-
398402
/** @internal */
399403
private strategyInput$ = new ReplaySubject<
400404
RxStrategyNames | Observable<RxStrategyNames>

libs/template/if/src/lib/if.directive.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,36 @@ import {
99
SimpleChanges,
1010
TemplateRef,
1111
ViewContainerRef,
12+
inject,
1213
} from '@angular/core';
1314
import { coerceAllFactory } from '@rx-angular/cdk/coercing';
1415
import {
15-
createTemplateNotifier,
1616
RxNotificationKind,
17+
createTemplateNotifier,
1718
} from '@rx-angular/cdk/notifications';
1819
import {
1920
RxStrategyNames,
2021
RxStrategyProvider,
2122
} from '@rx-angular/cdk/render-strategies';
2223
import {
23-
createTemplateManager,
2424
RxTemplateManager,
25+
createTemplateManager,
2526
} from '@rx-angular/cdk/template';
2627
import {
27-
merge,
2828
NEVER,
2929
NextObserver,
3030
Observable,
3131
ObservableInput,
3232
ReplaySubject,
3333
Subject,
3434
Subscription,
35+
merge,
3536
} from 'rxjs';
36-
import { mergeAll, filter, map } from 'rxjs/operators';
37+
import { filter, map, mergeAll } from 'rxjs/operators';
3738
import {
3839
RxIfTemplateNames,
39-
rxIfTemplateNames,
4040
RxIfViewContext,
41+
rxIfTemplateNames,
4142
} from './model/index';
4243

4344
/**
@@ -69,6 +70,17 @@ import {
6970
export class RxIf<T = unknown>
7071
implements OnInit, OnChanges, OnDestroy, OnChanges
7172
{
73+
/** @internal */
74+
private strategyProvider = inject(RxStrategyProvider);
75+
/** @internal */
76+
private cdRef = inject(ChangeDetectorRef);
77+
/** @internal */
78+
private ngZone = inject(NgZone);
79+
/** @internal */
80+
private templateRef = inject<TemplateRef<RxIfViewContext<T>>>(TemplateRef);
81+
/** @internal */
82+
private viewContainerRef = inject(ViewContainerRef);
83+
7284
/** @internal */
7385
private subscription = new Subscription();
7486
/** @internal */
@@ -477,14 +489,6 @@ export class RxIf<T = unknown>
477489
return this.then ? this.then : this.templateRef;
478490
}
479491

480-
constructor(
481-
private strategyProvider: RxStrategyProvider,
482-
private cdRef: ChangeDetectorRef,
483-
private ngZone: NgZone,
484-
private readonly templateRef: TemplateRef<RxIfViewContext<T>>,
485-
private readonly viewContainerRef: ViewContainerRef
486-
) {}
487-
488492
/** @internal */
489493
ngOnInit() {
490494
this.subscription.add(

libs/template/let/src/lib/let.directive.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
ChangeDetectorRef,
33
Directive,
44
ErrorHandler,
5+
inject,
56
Input,
67
NgZone,
78
OnChanges,
@@ -40,7 +41,7 @@ import {
4041
Subject,
4142
Subscription,
4243
} from 'rxjs';
43-
import { map, filter } from 'rxjs/operators';
44+
import { filter, map } from 'rxjs/operators';
4445

4546
/** @internal */
4647
type RxLetTemplateNames = 'nextTpl' | RxBaseTemplateNames;
@@ -95,6 +96,20 @@ export interface RxLetViewContext<T> extends RxViewContext<T> {
9596
@Directive({ selector: '[rxLet]', standalone: true })
9697
// eslint-disable-next-line @angular-eslint/directive-class-suffix
9798
export class RxLet<U> implements OnInit, OnDestroy, OnChanges {
99+
/** @internal */
100+
private strategyProvider = inject(RxStrategyProvider);
101+
/** @internal */
102+
private cdRef = inject(ChangeDetectorRef);
103+
/** @internal */
104+
private ngZone = inject(NgZone);
105+
/** @internal */
106+
private nextTemplateRef =
107+
inject<TemplateRef<RxLetViewContext<U>>>(TemplateRef);
108+
/** @internal */
109+
private viewContainerRef = inject(ViewContainerRef);
110+
/** @internal */
111+
private errorHandler = inject(ErrorHandler);
112+
98113
static ngTemplateGuard_rxLet: 'binding';
99114

100115
/**
@@ -469,15 +484,6 @@ export class RxLet<U> implements OnInit, OnDestroy, OnChanges {
469484
*/
470485
@Input('rxLetPatchZone') patchZone = this.strategyProvider.config.patchZone;
471486

472-
constructor(
473-
private strategyProvider: RxStrategyProvider,
474-
public cdRef: ChangeDetectorRef,
475-
private ngZone: NgZone,
476-
private readonly nextTemplateRef: TemplateRef<RxLetViewContext<U>>,
477-
private readonly viewContainerRef: ViewContainerRef,
478-
private errorHandler: ErrorHandler
479-
) {}
480-
481487
/** @internal */
482488
private observablesHandler = createTemplateNotifier<U>();
483489
/** @internal */

libs/template/let/src/lib/tests/let.directive.parent-notification.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import {
55
ViewChild,
66
ViewChildren,
77
} from '@angular/core';
8-
import { RxStrategyProvider } from '@rx-angular/cdk/render-strategies';
9-
import { asapScheduler, delay, Observable, ReplaySubject, Subject } from 'rxjs';
108
import { TestBed } from '@angular/core/testing';
9+
import { RxStrategyProvider } from '@rx-angular/cdk/render-strategies';
10+
import { Observable, ReplaySubject, Subject, asapScheduler, delay } from 'rxjs';
1111
import { RxLet } from '../let.directive';
1212

1313
@Component({
@@ -104,7 +104,7 @@ describe('LetDirective parent notification', () => {
104104

105105
it('should update parent', (done) => {
106106
fixture.detectChanges();
107-
const cdRef = componentInstance.letChildren.first.cdRef;
107+
const cdRef = (componentInstance.letChildren.first as any).cdRef;
108108
cdRef.detectChanges = jest.fn();
109109
const behavior = strategyProvider.strategies[strategy].behavior;
110110
componentInstance.rendered$
@@ -122,8 +122,8 @@ describe('LetDirective parent notification', () => {
122122

123123
it('should scope parent notifications', (done) => {
124124
fixture.detectChanges();
125-
const cdRef = componentInstance.letChildren.first.cdRef;
126-
const cdRef2 = componentInstance.letChildren.last.cdRef;
125+
const cdRef = (componentInstance.letChildren.first as any).cdRef;
126+
const cdRef2 = (componentInstance.letChildren.last as any).cdRef;
127127
expect(cdRef2).toEqual(cdRef);
128128
cdRef.detectChanges = jest.fn();
129129
const behavior = strategyProvider.strategies[strategy].behavior;
@@ -167,7 +167,7 @@ describe('LetDirective parent notification', () => {
167167

168168
it('should not update parent', (done) => {
169169
fixture.detectChanges();
170-
const cdRef = componentInstance.letChildren.first.cdRef;
170+
const cdRef = (componentInstance.letChildren.first as any).cdRef;
171171
cdRef.detectChanges = jest.fn();
172172
const behavior = strategyProvider.strategies[strategy].behavior;
173173
componentInstance.rendered$

libs/template/push/src/lib/push.pipe.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ import {
44
OnDestroy,
55
Pipe,
66
PipeTransform,
7+
inject,
78
untracked,
89
} from '@angular/core';
10+
import {
11+
RxNotification,
12+
RxNotificationKind,
13+
createTemplateNotifier,
14+
} from '@rx-angular/cdk/notifications';
915
import {
1016
RxStrategyNames,
1117
RxStrategyProvider,
1218
strategyHandling,
1319
} from '@rx-angular/cdk/render-strategies';
14-
import {
15-
createTemplateNotifier,
16-
RxNotification,
17-
RxNotificationKind,
18-
} from '@rx-angular/cdk/notifications';
1920
import {
2021
MonoTypeOperatorFunction,
2122
NextObserver,
@@ -26,9 +27,9 @@ import {
2627
Unsubscribable,
2728
} from 'rxjs';
2829
import {
30+
filter,
2931
shareReplay,
3032
skip,
31-
filter,
3233
switchMap,
3334
tap,
3435
withLatestFrom,
@@ -87,6 +88,12 @@ import {
8788
*/
8889
@Pipe({ name: 'push', pure: false, standalone: true })
8990
export class RxPush implements PipeTransform, OnDestroy {
91+
/** @internal */
92+
private strategyProvider = inject(RxStrategyProvider);
93+
/** @internal */
94+
private cdRef = inject(ChangeDetectorRef);
95+
/** @internal */
96+
private ngZone = inject(NgZone);
9097
/**
9198
* @internal
9299
* This is typed as `any` because the type cannot be inferred
@@ -112,12 +119,6 @@ export class RxPush implements PipeTransform, OnDestroy {
112119
/** @internal */
113120
private _renderCallback: NextObserver<any>;
114121

115-
constructor(
116-
private strategyProvider: RxStrategyProvider,
117-
private cdRef: ChangeDetectorRef,
118-
private ngZone: NgZone
119-
) {}
120-
121122
transform<U>(
122123
potentialObservable: null,
123124
config?: RxStrategyNames | Observable<RxStrategyNames>,

0 commit comments

Comments
 (0)