@angular/core 14.0.0-rc.2 → 14.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/di/injector_compatibility.mjs +57 -15
- package/esm2020/src/errors.mjs +1 -1
- package/esm2020/src/metadata/directives.mjs +1 -1
- package/esm2020/src/render3/definition.mjs +3 -3
- package/esm2020/src/render3/instructions/element.mjs +11 -10
- package/esm2020/src/render3/instructions/shared.mjs +82 -11
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/esm2020/testing/src/test_bed.mjs +5 -2
- package/fesm2015/core.mjs +152 -37
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +156 -38
- package/fesm2015/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +151 -37
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +155 -38
- package/fesm2020/testing.mjs.map +1 -1
- package/index.d.ts +33 -27
- package/package.json +1 -1
- package/testing/index.d.ts +5 -2
package/esm2020/src/version.mjs
CHANGED
|
@@ -21,5 +21,5 @@ export class Version {
|
|
|
21
21
|
/**
|
|
22
22
|
* @publicApi
|
|
23
23
|
*/
|
|
24
|
-
export const VERSION = new Version('14.0.0-rc.
|
|
24
|
+
export const VERSION = new Version('14.0.0-rc.3');
|
|
25
25
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBS2xCLFlBQW1CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXJcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBWZXJzaW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IG1ham9yOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBtaW5vcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0Y2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZnVsbDogc3RyaW5nKSB7XG4gICAgdGhpcy5tYWpvciA9IGZ1bGwuc3BsaXQoJy4nKVswXTtcbiAgICB0aGlzLm1pbm9yID0gZnVsbC5zcGxpdCgnLicpWzFdO1xuICAgIHRoaXMucGF0Y2ggPSBmdWxsLnNwbGl0KCcuJykuc2xpY2UoMikuam9pbignLicpO1xuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcwLjAuMC1QTEFDRUhPTERFUicpO1xuIl19
|
|
@@ -26,9 +26,9 @@ export class Log {
|
|
|
26
26
|
return this.logItems.join('; ');
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
Log.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
30
|
-
Log.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
29
|
+
Log.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: Log, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
+
Log.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: Log });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: Log, decorators: [{
|
|
32
32
|
type: Injectable
|
|
33
33
|
}], ctorParameters: function () { return []; } });
|
|
34
34
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLEdBQUc7SUFHZDtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBVSxDQUFDLGlCQUFpQjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsRUFBRSxDQUFDLEtBQVUsQ0FBQyxpQkFBaUI7UUFDN0IsT0FBTyxDQUFDLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7MkdBdkJVLEdBQUc7K0dBQUgsR0FBRztzR0FBSCxHQUFHO2tCQURmLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZyB7XG4gIGxvZ0l0ZW1zOiBhbnlbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvZ0l0ZW1zID0gW107XG4gIH1cblxuICBhZGQodmFsdWU6IGFueSAvKiogVE9ETyAjOTEwMCAqLyk6IHZvaWQge1xuICAgIHRoaXMubG9nSXRlbXMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBmbih2YWx1ZTogYW55IC8qKiBUT0RPICM5MTAwICovKSB7XG4gICAgcmV0dXJuIChhMTogYW55ID0gbnVsbCwgYTI6IGFueSA9IG51bGwsIGEzOiBhbnkgPSBudWxsLCBhNDogYW55ID0gbnVsbCwgYTU6IGFueSA9IG51bGwpID0+IHtcbiAgICAgIHRoaXMubG9nSXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubG9nSXRlbXMgPSBbXTtcbiAgfVxuXG4gIHJlc3VsdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvZ0l0ZW1zLmpvaW4oJzsgJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -25,9 +25,9 @@ export class MockNgZone extends NgZone {
|
|
|
25
25
|
this.onStable.emit(null);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
MockNgZone.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
29
|
-
MockNgZone.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-rc.
|
|
28
|
+
MockNgZone.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: MockNgZone, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
MockNgZone.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: MockNgZone });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-rc.3", ngImport: i0, type: MockNgZone, decorators: [{
|
|
31
31
|
type: Injectable
|
|
32
32
|
}], ctorParameters: function () { return []; } });
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZV9tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy9uZ196b25lX21vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUcvRDs7R0FFRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEsTUFBTTtJQUdwQztRQUNFLEtBQUssQ0FBQyxFQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBSHpFLGFBQVEsR0FBc0IsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFJL0QsQ0FBQztJQUVRLEdBQUcsQ0FBQyxFQUFZO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRVEsaUJBQWlCLENBQUMsRUFBWTtRQUNyQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7O2tIQWpCVSxVQUFVO3NIQUFWLFVBQVU7c0dBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG4vKipcbiAqIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgTmdab25lfS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vY2tOZ1pvbmUgZXh0ZW5kcyBOZ1pvbmUge1xuICBvdmVycmlkZSBvblN0YWJsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6IGZhbHNlLCBzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiBmYWxzZX0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgcnVuKGZuOiBGdW5jdGlvbik6IGFueSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH1cblxuICBvdmVycmlkZSBydW5PdXRzaWRlQW5ndWxhcihmbjogRnVuY3Rpb24pOiBhbnkge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgc2ltdWxhdGVab25lRXhpdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhYmxlLmVtaXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -28,7 +28,10 @@ export const TestBed = TestBedRender3;
|
|
|
28
28
|
*/
|
|
29
29
|
export const getTestBed = _getTestBedRender3;
|
|
30
30
|
/**
|
|
31
|
-
* Allows injecting dependencies in `beforeEach()` and `it()`.
|
|
31
|
+
* Allows injecting dependencies in `beforeEach()` and `it()`. Note: this function
|
|
32
|
+
* (imported from the `@angular/core/testing` package) can **only** be used to inject dependencies
|
|
33
|
+
* in tests. To inject dependencies in your application code, use the [`inject`](api/core/inject)
|
|
34
|
+
* function from the `@angular/core` package instead.
|
|
32
35
|
*
|
|
33
36
|
* Example:
|
|
34
37
|
*
|
|
@@ -88,4 +91,4 @@ export function withModule(moduleDef, fn) {
|
|
|
88
91
|
}
|
|
89
92
|
return new InjectSetupWrapper(() => moduleDef);
|
|
90
93
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9iZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3Rlc3Rpbmcvc3JjL3Rlc3RfYmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQU1ILE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUF5RWpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFrQixjQUFjLENBQUM7QUFFckQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFrQixrQkFBa0IsQ0FBQztBQUU1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFhLEVBQUUsRUFBWTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM3Qix3RUFBd0U7SUFDeEUsT0FBTztRQUNMLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsVUFBb0M7UUFBcEMsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7SUFBRyxDQUFDO0lBRXBELFVBQVU7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLElBQUksU0FBUyxFQUFFO1lBQ2IsVUFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWEsRUFBRSxFQUFZO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQix3RUFBd0U7UUFDeEUsT0FBTztZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU9ELE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBNkIsRUFBRSxFQUFrQjtJQUUxRSxJQUFJLEVBQUUsRUFBRTtRQUNOLHdFQUF3RTtRQUN4RSxPQUFPO1lBQ0wsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDN0IsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztLQUNIO0lBQ0QsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0RmxhZ3MsIE5nTW9kdWxlLCBQaXBlLCBQbGF0Zm9ybVJlZiwgUHJvdmlkZXJUb2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7Q29tcG9uZW50Rml4dHVyZX0gZnJvbSAnLi9jb21wb25lbnRfZml4dHVyZSc7XG5pbXBvcnQge01ldGFkYXRhT3ZlcnJpZGV9IGZyb20gJy4vbWV0YWRhdGFfb3ZlcnJpZGUnO1xuaW1wb3J0IHtfZ2V0VGVzdEJlZFJlbmRlcjMsIFRlc3RCZWRSZW5kZXIzfSBmcm9tICcuL3IzX3Rlc3RfYmVkJztcbmltcG9ydCB7VGVzdEJlZFN0YXRpYywgVGVzdEVudmlyb25tZW50T3B0aW9ucywgVGVzdE1vZHVsZU1ldGFkYXRhfSBmcm9tICcuL3Rlc3RfYmVkX2NvbW1vbic7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RCZWQge1xuICBwbGF0Zm9ybTogUGxhdGZvcm1SZWY7XG5cbiAgbmdNb2R1bGU6IFR5cGU8YW55PnxUeXBlPGFueT5bXTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgZW52aXJvbm1lbnQgZm9yIHRlc3Rpbmcgd2l0aCBhIGNvbXBpbGVyIGZhY3RvcnksIGEgUGxhdGZvcm1SZWYsIGFuZCBhblxuICAgKiBhbmd1bGFyIG1vZHVsZS4gVGhlc2UgYXJlIGNvbW1vbiB0byBldmVyeSB0ZXN0IGluIHRoZSBzdWl0ZS5cbiAgICpcbiAgICogVGhpcyBtYXkgb25seSBiZSBjYWxsZWQgb25jZSwgdG8gc2V0IHVwIHRoZSBjb21tb24gcHJvdmlkZXJzIGZvciB0aGUgY3VycmVudCB0ZXN0XG4gICAqIHN1aXRlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtLiBJZiB5b3UgYWJzb2x1dGVseSBuZWVkIHRvIGNoYW5nZSB0aGUgcHJvdmlkZXJzLFxuICAgKiBmaXJzdCB1c2UgYHJlc2V0VGVzdEVudmlyb25tZW50YC5cbiAgICpcbiAgICogVGVzdCBtb2R1bGVzIGFuZCBwbGF0Zm9ybXMgZm9yIGluZGl2aWR1YWwgcGxhdGZvcm1zIGFyZSBhdmFpbGFibGUgZnJvbVxuICAgKiAnQGFuZ3VsYXIvPHBsYXRmb3JtX25hbWU+L3Rlc3RpbmcnLlxuICAgKi9cbiAgaW5pdFRlc3RFbnZpcm9ubWVudChcbiAgICAgIG5nTW9kdWxlOiBUeXBlPGFueT58VHlwZTxhbnk+W10sIHBsYXRmb3JtOiBQbGF0Zm9ybVJlZixcbiAgICAgIG9wdGlvbnM/OiBUZXN0RW52aXJvbm1lbnRPcHRpb25zKTogdm9pZDtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIHByb3ZpZGVycyBmb3IgdGhlIHRlc3QgaW5qZWN0b3IuXG4gICAqL1xuICByZXNldFRlc3RFbnZpcm9ubWVudCgpOiB2b2lkO1xuXG4gIHJlc2V0VGVzdGluZ01vZHVsZSgpOiB2b2lkO1xuXG4gIGNvbmZpZ3VyZUNvbXBpbGVyKGNvbmZpZzoge3Byb3ZpZGVycz86IGFueVtdLCB1c2VKaXQ/OiBib29sZWFufSk6IHZvaWQ7XG5cbiAgY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSk6IHZvaWQ7XG5cbiAgY29tcGlsZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnk+O1xuXG4gIGluamVjdDxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgbm90Rm91bmRWYWx1ZT86IFQsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUO1xuICBpbmplY3Q8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU6IG51bGwsIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBUfG51bGw7XG5cbiAgLyoqIEBkZXByZWNhdGVkIGZyb20gdjkuMC4wIHVzZSBUZXN0QmVkLmluamVjdCAqL1xuICBnZXQ8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIG5vdEZvdW5kVmFsdWU/OiBULCBmbGFncz86IEluamVjdEZsYWdzKTogYW55O1xuICAvKiogQGRlcHJlY2F0ZWQgZnJvbSB2OS4wLjAgdXNlIFRlc3RCZWQuaW5qZWN0ICovXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55O1xuXG4gIGV4ZWN1dGUodG9rZW5zOiBhbnlbXSwgZm46IEZ1bmN0aW9uLCBjb250ZXh0PzogYW55KTogYW55O1xuXG4gIG92ZXJyaWRlTW9kdWxlKG5nTW9kdWxlOiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPE5nTW9kdWxlPik6IHZvaWQ7XG5cbiAgb3ZlcnJpZGVDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4sIG92ZXJyaWRlOiBNZXRhZGF0YU92ZXJyaWRlPENvbXBvbmVudD4pOiB2b2lkO1xuXG4gIG92ZXJyaWRlRGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxEaXJlY3RpdmU+KTogdm9pZDtcblxuICBvdmVycmlkZVBpcGUocGlwZTogVHlwZTxhbnk+LCBvdmVycmlkZTogTWV0YWRhdGFPdmVycmlkZTxQaXBlPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0ZXMgYWxsIHByb3ZpZGVycyBmb3IgdGhlIGdpdmVuIHRva2VuIHdpdGggdGhlIGdpdmVuIHByb3ZpZGVyIGRlZmluaXRpb24uXG4gICAqL1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7XG4gICAgdXNlRmFjdG9yeTogRnVuY3Rpb24sXG4gICAgZGVwczogYW55W10sXG4gIH0pOiB2b2lkO1xuICBvdmVycmlkZVByb3ZpZGVyKHRva2VuOiBhbnksIHByb3ZpZGVyOiB7dXNlVmFsdWU6IGFueTt9KTogdm9pZDtcbiAgb3ZlcnJpZGVQcm92aWRlcih0b2tlbjogYW55LCBwcm92aWRlcjoge3VzZUZhY3Rvcnk/OiBGdW5jdGlvbiwgdXNlVmFsdWU/OiBhbnksIGRlcHM/OiBhbnlbXX0pOlxuICAgICAgdm9pZDtcblxuICBvdmVycmlkZVRlbXBsYXRlVXNpbmdUZXN0aW5nTW9kdWxlKGNvbXBvbmVudDogVHlwZTxhbnk+LCB0ZW1wbGF0ZTogc3RyaW5nKTogdm9pZDtcblxuICBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBUeXBlPFQ+KTogQ29tcG9uZW50Rml4dHVyZTxUPjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbmZpZ3VyZXMgYW5kIGluaXRpYWxpemVzIGVudmlyb25tZW50IGZvciB1bml0IHRlc3RpbmcgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yXG4gKiBjcmVhdGluZyBjb21wb25lbnRzIGFuZCBzZXJ2aWNlcyBpbiB1bml0IHRlc3RzLlxuICpcbiAqIGBUZXN0QmVkYCBpcyB0aGUgcHJpbWFyeSBhcGkgZm9yIHdyaXRpbmcgdW5pdCB0ZXN0cyBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy5cbiAqXG4gKiBOb3RlOiBVc2UgYFRlc3RCZWRgIGluIHRlc3RzLiBJdCB3aWxsIGJlIHNldCB0byBlaXRoZXIgYFRlc3RCZWRWaWV3RW5naW5lYCBvciBgVGVzdEJlZFJlbmRlcjNgXG4gKiBhY2NvcmRpbmcgdG8gdGhlIGNvbXBpbGVyIHVzZWQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgVGVzdEJlZDogVGVzdEJlZFN0YXRpYyA9IFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIFJldHVybnMgYSBzaW5nbGV0b24gb2YgdGhlIGFwcGxpY2FibGUgYFRlc3RCZWRgLlxuICpcbiAqIEl0IHdpbGwgYmUgZWl0aGVyIGFuIGluc3RhbmNlIG9mIGBUZXN0QmVkVmlld0VuZ2luZWAgb3IgYFRlc3RCZWRSZW5kZXIzYC5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUZXN0QmVkOiAoKSA9PiBUZXN0QmVkID0gX2dldFRlc3RCZWRSZW5kZXIzO1xuXG4vKipcbiAqIEFsbG93cyBpbmplY3RpbmcgZGVwZW5kZW5jaWVzIGluIGBiZWZvcmVFYWNoKClgIGFuZCBgaXQoKWAuIE5vdGU6IHRoaXMgZnVuY3Rpb25cbiAqIChpbXBvcnRlZCBmcm9tIHRoZSBgQGFuZ3VsYXIvY29yZS90ZXN0aW5nYCBwYWNrYWdlKSBjYW4gKipvbmx5KiogYmUgdXNlZCB0byBpbmplY3QgZGVwZW5kZW5jaWVzXG4gKiBpbiB0ZXN0cy4gVG8gaW5qZWN0IGRlcGVuZGVuY2llcyBpbiB5b3VyIGFwcGxpY2F0aW9uIGNvZGUsIHVzZSB0aGUgW2BpbmplY3RgXShhcGkvY29yZS9pbmplY3QpXG4gKiBmdW5jdGlvbiBmcm9tIHRoZSBgQGFuZ3VsYXIvY29yZWAgcGFja2FnZSBpbnN0ZWFkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBiZWZvcmVFYWNoKGluamVjdChbRGVwZW5kZW5jeSwgQUNsYXNzXSwgKGRlcCwgb2JqZWN0KSA9PiB7XG4gKiAgIC8vIHNvbWUgY29kZSB0aGF0IHVzZXMgYGRlcGAgYW5kIGBvYmplY3RgXG4gKiAgIC8vIC4uLlxuICogfSkpO1xuICpcbiAqIGl0KCcuLi4nLCBpbmplY3QoW0FDbGFzc10sIChvYmplY3QpID0+IHtcbiAqICAgb2JqZWN0LmRvU29tZXRoaW5nKCk7XG4gKiAgIGV4cGVjdCguLi4pO1xuICogfSlcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdCh0b2tlbnM6IGFueVtdLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnkge1xuICBjb25zdCB0ZXN0QmVkID0gZ2V0VGVzdEJlZCgpO1xuICAvLyBOb3QgdXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gdG8gcHJlc2VydmUgY29udGV4dCBwYXNzZWQgZnJvbSBjYWxsIHNpdGVcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IHVua25vd24pIHtcbiAgICByZXR1cm4gdGVzdEJlZC5leGVjdXRlKHRva2VucywgZm4sIHRoaXMpO1xuICB9O1xufVxuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNsYXNzIEluamVjdFNldHVwV3JhcHBlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZHVsZURlZjogKCkgPT4gVGVzdE1vZHVsZU1ldGFkYXRhKSB7fVxuXG4gIHByaXZhdGUgX2FkZE1vZHVsZSgpIHtcbiAgICBjb25zdCBtb2R1bGVEZWYgPSB0aGlzLl9tb2R1bGVEZWYoKTtcbiAgICBpZiAobW9kdWxlRGVmKSB7XG4gICAgICBnZXRUZXN0QmVkKCkuY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWYpO1xuICAgIH1cbiAgfVxuXG4gIGluamVjdCh0b2tlbnM6IGFueVtdLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIC8vIE5vdCB1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB0byBwcmVzZXJ2ZSBjb250ZXh0IHBhc3NlZCBmcm9tIGNhbGwgc2l0ZVxuICAgIHJldHVybiBmdW5jdGlvbih0aGlzOiB1bmtub3duKSB7XG4gICAgICBzZWxmLl9hZGRNb2R1bGUoKTtcbiAgICAgIHJldHVybiBpbmplY3QodG9rZW5zLCBmbikuY2FsbCh0aGlzKTtcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aE1vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSk6IEluamVjdFNldHVwV3JhcHBlcjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW9kdWxlKG1vZHVsZURlZjogVGVzdE1vZHVsZU1ldGFkYXRhLCBmbjogRnVuY3Rpb24pOiAoKSA9PiBhbnk7XG5leHBvcnQgZnVuY3Rpb24gd2l0aE1vZHVsZShtb2R1bGVEZWY6IFRlc3RNb2R1bGVNZXRhZGF0YSwgZm4/OiBGdW5jdGlvbnxudWxsKTogKCgpID0+IGFueSl8XG4gICAgSW5qZWN0U2V0dXBXcmFwcGVyIHtcbiAgaWYgKGZuKSB7XG4gICAgLy8gTm90IHVzaW5nIGFuIGFycm93IGZ1bmN0aW9uIHRvIHByZXNlcnZlIGNvbnRleHQgcGFzc2VkIGZyb20gY2FsbCBzaXRlXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHRoaXM6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHRlc3RCZWQgPSBnZXRUZXN0QmVkKCk7XG4gICAgICBpZiAobW9kdWxlRGVmKSB7XG4gICAgICAgIHRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVEZWYpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIG5ldyBJbmplY3RTZXR1cFdyYXBwZXIoKCkgPT4gbW9kdWxlRGVmKTtcbn1cbiJdfQ==
|
package/fesm2015/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v14.0.0-rc.
|
|
2
|
+
* @license Angular v14.0.0-rc.3
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -954,8 +954,8 @@ function ɵɵdefineComponent(componentDefinition) {
|
|
|
954
954
|
*/
|
|
955
955
|
function ɵɵsetComponentScope(type, directives, pipes) {
|
|
956
956
|
const def = type.ɵcmp;
|
|
957
|
-
def.directiveDefs = () => directives.map(extractDirectiveDef);
|
|
958
|
-
def.pipeDefs = () => pipes.map(getPipeDef$1);
|
|
957
|
+
def.directiveDefs = () => (typeof directives === 'function' ? directives() : directives).map(extractDirectiveDef);
|
|
958
|
+
def.pipeDefs = () => (typeof pipes === 'function' ? pipes() : pipes).map(getPipeDef$1);
|
|
959
959
|
}
|
|
960
960
|
function extractDirectiveDef(type) {
|
|
961
961
|
return getComponentDef(type) || getDirectiveDef(type);
|
|
@@ -4837,9 +4837,9 @@ function setCurrentInjector(injector) {
|
|
|
4837
4837
|
function injectInjectorOnly(token, flags = InjectFlags.Default) {
|
|
4838
4838
|
if (_currentInjector === undefined) {
|
|
4839
4839
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
4840
|
-
`inject() must be called from an injection context` :
|
|
4840
|
+
`inject() must be called from an injection context (a constructor, a factory function or a field initializer)` :
|
|
4841
4841
|
'';
|
|
4842
|
-
throw new RuntimeError(203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
|
|
4842
|
+
throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, errorMessage);
|
|
4843
4843
|
}
|
|
4844
4844
|
else if (_currentInjector === null) {
|
|
4845
4845
|
return injectRootLimpMode(token, undefined, flags);
|
|
@@ -4874,29 +4874,71 @@ Please check that 1) the type for the parameter at index ${index} is correct and
|
|
|
4874
4874
|
}
|
|
4875
4875
|
/**
|
|
4876
4876
|
* Injects a token from the currently active injector.
|
|
4877
|
-
*
|
|
4878
|
-
*
|
|
4879
|
-
* `
|
|
4880
|
-
*
|
|
4881
|
-
*
|
|
4882
|
-
*
|
|
4883
|
-
*
|
|
4884
|
-
*
|
|
4885
|
-
* @param token
|
|
4877
|
+
* `inject` is only supported during instantiation of a dependency by the DI system. It can be used
|
|
4878
|
+
* during:
|
|
4879
|
+
* - Construction (via the `constructor`) of a class being instantiated by the DI system, such
|
|
4880
|
+
* as an `@Injectable` or `@Component`.
|
|
4881
|
+
* - In the initializer for fields of such classes.
|
|
4882
|
+
* - In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`.
|
|
4883
|
+
* - In the `factory` function specified for an `InjectionToken`.
|
|
4884
|
+
*
|
|
4885
|
+
* @param token A token that represents a dependency that should be injected.
|
|
4886
4886
|
* @param flags Optional flags that control how injection is executed.
|
|
4887
4887
|
* The flags correspond to injection strategies that can be specified with
|
|
4888
4888
|
* parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
|
|
4889
|
-
* @returns the injected value if
|
|
4889
|
+
* @returns the injected value if operation is successful, `null` otherwise.
|
|
4890
|
+
* @throws if called outside of a supported context.
|
|
4890
4891
|
*
|
|
4891
4892
|
* @usageNotes
|
|
4893
|
+
* In practice the `inject()` calls are allowed in a constructor, a constructor parameter and a
|
|
4894
|
+
* field initializer:
|
|
4892
4895
|
*
|
|
4893
|
-
*
|
|
4896
|
+
* ```typescript
|
|
4897
|
+
* @Injectable({providedIn: 'root'})
|
|
4898
|
+
* export class Car {
|
|
4899
|
+
* radio: Radio|undefined;
|
|
4900
|
+
* // OK: field initializer
|
|
4901
|
+
* spareTyre = inject(Tyre);
|
|
4894
4902
|
*
|
|
4895
|
-
* {
|
|
4903
|
+
* constructor() {
|
|
4904
|
+
* // OK: constructor body
|
|
4905
|
+
* this.radio = inject(Radio);
|
|
4906
|
+
* }
|
|
4907
|
+
* }
|
|
4908
|
+
* ```
|
|
4909
|
+
*
|
|
4910
|
+
* It is also legal to call `inject` from a provider's factory:
|
|
4911
|
+
*
|
|
4912
|
+
* ```typescript
|
|
4913
|
+
* providers: [
|
|
4914
|
+
* {provide: Car, useFactory: () => {
|
|
4915
|
+
* // OK: a class factory
|
|
4916
|
+
* const engine = inject(Engine);
|
|
4917
|
+
* return new Car(engine);
|
|
4918
|
+
* }}
|
|
4919
|
+
* ]
|
|
4920
|
+
* ```
|
|
4921
|
+
*
|
|
4922
|
+
* Calls to the `inject()` function outside of the class creation context will result in error. Most
|
|
4923
|
+
* notably, calls to `inject()` are disallowed after a class instance was created, in methods
|
|
4924
|
+
* (including lifecycle hooks):
|
|
4925
|
+
*
|
|
4926
|
+
* ```typescript
|
|
4927
|
+
* @Component({ ... })
|
|
4928
|
+
* export class CarComponent {
|
|
4929
|
+
* ngOnInit() {
|
|
4930
|
+
* // ERROR: too late, the component instance was already created
|
|
4931
|
+
* const engine = inject(Engine);
|
|
4932
|
+
* engine.start();
|
|
4933
|
+
* }
|
|
4934
|
+
* }
|
|
4935
|
+
* ```
|
|
4896
4936
|
*
|
|
4897
4937
|
* @publicApi
|
|
4898
4938
|
*/
|
|
4899
|
-
|
|
4939
|
+
function inject(token, flags = InjectFlags.Default) {
|
|
4940
|
+
return ɵɵinject(token, flags);
|
|
4941
|
+
}
|
|
4900
4942
|
function injectArgs(types) {
|
|
4901
4943
|
const args = [];
|
|
4902
4944
|
for (let i = 0; i < types.length; i++) {
|
|
@@ -11355,20 +11397,55 @@ function createTNodeAtIndex(tView, index, type, name, attrs) {
|
|
|
11355
11397
|
return tNode;
|
|
11356
11398
|
}
|
|
11357
11399
|
/**
|
|
11358
|
-
*
|
|
11400
|
+
* WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
|
|
11401
|
+
* and must **not** be used in production bundles. The function makes megamorphic reads, which might
|
|
11402
|
+
* be too slow for production mode and also it relies on the constructor function being available.
|
|
11403
|
+
*
|
|
11404
|
+
* Gets a reference to the host component def (where a current component is declared).
|
|
11359
11405
|
*
|
|
11360
11406
|
* @param lView An `LView` that represents a current component that is being rendered.
|
|
11361
11407
|
*/
|
|
11362
|
-
function
|
|
11408
|
+
function getDeclarationComponentDef(lView) {
|
|
11363
11409
|
!ngDevMode && throwError('Must never be called in production mode');
|
|
11364
11410
|
const declarationLView = lView[DECLARATION_COMPONENT_VIEW];
|
|
11365
11411
|
const context = declarationLView[CONTEXT];
|
|
11366
|
-
// Unable to obtain a context
|
|
11412
|
+
// Unable to obtain a context.
|
|
11367
11413
|
if (!context)
|
|
11368
|
-
return
|
|
11369
|
-
|
|
11414
|
+
return null;
|
|
11415
|
+
return context.constructor ? getComponentDef(context.constructor) : null;
|
|
11416
|
+
}
|
|
11417
|
+
/**
|
|
11418
|
+
* WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
|
|
11419
|
+
* and must **not** be used in production bundles. The function makes megamorphic reads, which might
|
|
11420
|
+
* be too slow for production mode.
|
|
11421
|
+
*
|
|
11422
|
+
* Checks if the current component is declared inside of a standalone component template.
|
|
11423
|
+
*
|
|
11424
|
+
* @param lView An `LView` that represents a current component that is being rendered.
|
|
11425
|
+
*/
|
|
11426
|
+
function isHostComponentStandalone(lView) {
|
|
11427
|
+
!ngDevMode && throwError('Must never be called in production mode');
|
|
11428
|
+
const componentDef = getDeclarationComponentDef(lView);
|
|
11429
|
+
// Treat host component as non-standalone if we can't obtain the def.
|
|
11370
11430
|
return !!(componentDef === null || componentDef === void 0 ? void 0 : componentDef.standalone);
|
|
11371
11431
|
}
|
|
11432
|
+
/**
|
|
11433
|
+
* WARNING: this is a **dev-mode only** function (thus should always be guarded by the `ngDevMode`)
|
|
11434
|
+
* and must **not** be used in production bundles. The function makes megamorphic reads, which might
|
|
11435
|
+
* be too slow for production mode.
|
|
11436
|
+
*
|
|
11437
|
+
* Constructs a string describing the location of the host component template. The function is used
|
|
11438
|
+
* in dev mode to produce error messages.
|
|
11439
|
+
*
|
|
11440
|
+
* @param lView An `LView` that represents a current component that is being rendered.
|
|
11441
|
+
*/
|
|
11442
|
+
function getTemplateLocationDetails(lView) {
|
|
11443
|
+
var _a;
|
|
11444
|
+
!ngDevMode && throwError('Must never be called in production mode');
|
|
11445
|
+
const hostComponentDef = getDeclarationComponentDef(lView);
|
|
11446
|
+
const componentClassName = (_a = hostComponentDef === null || hostComponentDef === void 0 ? void 0 : hostComponentDef.type) === null || _a === void 0 ? void 0 : _a.name;
|
|
11447
|
+
return componentClassName ? ` (used in the '${componentClassName}' component template)` : '';
|
|
11448
|
+
}
|
|
11372
11449
|
/**
|
|
11373
11450
|
* When elements are created dynamically after a view blueprint is created (e.g. through
|
|
11374
11451
|
* i18nApply()), we need to adjust the blueprint for future
|
|
@@ -12037,7 +12114,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
12037
12114
|
validateAgainstEventProperties(propName);
|
|
12038
12115
|
if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
|
|
12039
12116
|
// Return here since we only log warnings for unknown properties.
|
|
12040
|
-
handleUnknownPropertyError(propName, tNode);
|
|
12117
|
+
handleUnknownPropertyError(propName, tNode, lView);
|
|
12041
12118
|
return;
|
|
12042
12119
|
}
|
|
12043
12120
|
ngDevMode.rendererSetProperty++;
|
|
@@ -12057,7 +12134,7 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
12057
12134
|
// If the node is a container and the property didn't
|
|
12058
12135
|
// match any of the inputs or schemas we should throw.
|
|
12059
12136
|
if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
|
|
12060
|
-
handleUnknownPropertyError(propName, tNode);
|
|
12137
|
+
handleUnknownPropertyError(propName, tNode, lView);
|
|
12061
12138
|
}
|
|
12062
12139
|
}
|
|
12063
12140
|
}
|
|
@@ -12158,12 +12235,20 @@ function matchingSchemas(schemas, tagName) {
|
|
|
12158
12235
|
}
|
|
12159
12236
|
return false;
|
|
12160
12237
|
}
|
|
12238
|
+
/**
|
|
12239
|
+
* The set of known control flow directives.
|
|
12240
|
+
* We use this set to produce a more precises error message with a note
|
|
12241
|
+
* that the `CommonModule` should also be included.
|
|
12242
|
+
*/
|
|
12243
|
+
const KNOWN_CONTROL_FLOW_DIRECTIVES = new Set(['ngIf', 'ngFor', 'ngSwitch', 'ngSwitchCase', 'ngSwitchDefault']);
|
|
12161
12244
|
/**
|
|
12162
12245
|
* Logs or throws an error that a property is not supported on an element.
|
|
12246
|
+
*
|
|
12163
12247
|
* @param propName Name of the invalid property.
|
|
12164
|
-
* @param
|
|
12248
|
+
* @param tNode A `TNode` that represents a current component that is being rendered.
|
|
12249
|
+
* @param lView An `LView` that represents a current component that is being rendered.
|
|
12165
12250
|
*/
|
|
12166
|
-
function handleUnknownPropertyError(propName, tNode) {
|
|
12251
|
+
function handleUnknownPropertyError(propName, tNode, lView) {
|
|
12167
12252
|
let tagName = tNode.value;
|
|
12168
12253
|
// Special-case a situation when a structural directive is applied to
|
|
12169
12254
|
// an `<ng-template>` element, for example: `<ng-template *ngIf="true">`.
|
|
@@ -12174,7 +12259,36 @@ function handleUnknownPropertyError(propName, tNode) {
|
|
|
12174
12259
|
if (!tagName && tNode.type === 4 /* TNodeType.Container */) {
|
|
12175
12260
|
tagName = 'ng-template';
|
|
12176
12261
|
}
|
|
12177
|
-
const
|
|
12262
|
+
const isHostStandalone = isHostComponentStandalone(lView);
|
|
12263
|
+
const templateLocation = getTemplateLocationDetails(lView);
|
|
12264
|
+
let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`;
|
|
12265
|
+
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
12266
|
+
const importLocation = isHostStandalone ?
|
|
12267
|
+
'included in the \'@Component.imports\' of this component' :
|
|
12268
|
+
'a part of an @NgModule where this component is declared';
|
|
12269
|
+
if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) {
|
|
12270
|
+
// Most likely this is a control flow directive (such as `*ngIf`) used in
|
|
12271
|
+
// a template, but the `CommonModule` is not imported.
|
|
12272
|
+
message += `\nIf the '${propName}' is an Angular control flow directive, ` +
|
|
12273
|
+
`please make sure that the 'CommonModule' is ${importLocation}.`;
|
|
12274
|
+
}
|
|
12275
|
+
else {
|
|
12276
|
+
// May be an Angular component, which is not imported/declared?
|
|
12277
|
+
message += `\n1. If '${tagName}' is an Angular component and it has the ` +
|
|
12278
|
+
`'${propName}' input, then verify that it is ${importLocation}.`;
|
|
12279
|
+
// May be a Web Component?
|
|
12280
|
+
if (tagName && tagName.indexOf('-') > -1) {
|
|
12281
|
+
message += `\n2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' ` +
|
|
12282
|
+
`to the ${schemas} of this component to suppress this message.`;
|
|
12283
|
+
message += `\n3. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
|
|
12284
|
+
`the ${schemas} of this component.`;
|
|
12285
|
+
}
|
|
12286
|
+
else {
|
|
12287
|
+
// If it's expected, the error can be suppressed by the `NO_ERRORS_SCHEMA` schema.
|
|
12288
|
+
message += `\n2. To allow any property add 'NO_ERRORS_SCHEMA' to ` +
|
|
12289
|
+
`the ${schemas} of this component.`;
|
|
12290
|
+
}
|
|
12291
|
+
}
|
|
12178
12292
|
if (shouldThrowErrorOnUnknownProperty) {
|
|
12179
12293
|
throw new RuntimeError(303 /* RuntimeErrorCode.UNKNOWN_BINDING */, message);
|
|
12180
12294
|
}
|
|
@@ -14960,8 +15074,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
|
|
|
14960
15074
|
const tNode = getOrCreateTNode(tView, index, 2 /* TNodeType.Element */, name, attrs);
|
|
14961
15075
|
const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
|
|
14962
15076
|
if (ngDevMode) {
|
|
14963
|
-
|
|
14964
|
-
validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives, hostIsStandalone);
|
|
15077
|
+
validateElementIsKnown(native, lView, tNode.value, tView.schemas, hasDirectives);
|
|
14965
15078
|
}
|
|
14966
15079
|
if (tNode.attrs !== null) {
|
|
14967
15080
|
computeStaticStyling(tNode, tNode.attrs, false);
|
|
@@ -15099,12 +15212,12 @@ function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
|
|
|
15099
15212
|
* - the element is allowed by one of the schemas
|
|
15100
15213
|
*
|
|
15101
15214
|
* @param element Element to validate
|
|
15215
|
+
* @param lView An `LView` that represents a current component that is being rendered.
|
|
15102
15216
|
* @param tagName Name of the tag to check
|
|
15103
15217
|
* @param schemas Array of schemas
|
|
15104
15218
|
* @param hasDirectives Boolean indicating that the element matches any directive
|
|
15105
|
-
* @param hostIsStandalone Boolean indicating whether the host is a standalone component
|
|
15106
15219
|
*/
|
|
15107
|
-
function validateElementIsKnown(element, tagName, schemas, hasDirectives
|
|
15220
|
+
function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) {
|
|
15108
15221
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
15109
15222
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
15110
15223
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
@@ -15124,10 +15237,12 @@ function validateElementIsKnown(element, tagName, schemas, hasDirectives, hostIs
|
|
|
15124
15237
|
(typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
|
|
15125
15238
|
!customElements.get(tagName));
|
|
15126
15239
|
if (isUnknown && !matchingSchemas(schemas, tagName)) {
|
|
15127
|
-
const
|
|
15128
|
-
|
|
15129
|
-
|
|
15130
|
-
|
|
15240
|
+
const isHostStandalone = isHostComponentStandalone(lView);
|
|
15241
|
+
const templateLocation = getTemplateLocationDetails(lView);
|
|
15242
|
+
const schemas = `'${isHostStandalone ? '@Component' : '@NgModule'}.schemas'`;
|
|
15243
|
+
let message = `'${tagName}' is not a known element${templateLocation}:\n`;
|
|
15244
|
+
message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? 'included in the \'@Component.imports\' of this component' :
|
|
15245
|
+
'a part of an @NgModule where this component is declared'}.\n`;
|
|
15131
15246
|
if (tagName && tagName.indexOf('-') > -1) {
|
|
15132
15247
|
message +=
|
|
15133
15248
|
`2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`;
|
|
@@ -21627,7 +21742,7 @@ class Version {
|
|
|
21627
21742
|
/**
|
|
21628
21743
|
* @publicApi
|
|
21629
21744
|
*/
|
|
21630
|
-
const VERSION = new Version('14.0.0-rc.
|
|
21745
|
+
const VERSION = new Version('14.0.0-rc.3');
|
|
21631
21746
|
|
|
21632
21747
|
/**
|
|
21633
21748
|
* @license
|