@angular/core 17.2.0-next.1 → 17.2.0-rc.0

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.
Files changed (85) hide show
  1. package/esm2022/primitives/signals/index.mjs +3 -3
  2. package/esm2022/src/application/application_ngmodule_factory_compiler.mjs +61 -0
  3. package/esm2022/src/application/application_ref.mjs +55 -69
  4. package/esm2022/src/authoring/input/input.mjs +48 -0
  5. package/esm2022/src/authoring/input/input_signal.mjs +40 -0
  6. package/esm2022/src/authoring/input/input_signal_node.mjs +22 -0
  7. package/esm2022/src/authoring/input/input_type_checking.mjs +9 -0
  8. package/esm2022/src/authoring/model/model.mjs +50 -0
  9. package/esm2022/src/authoring/model/model_signal.mjs +68 -0
  10. package/esm2022/src/authoring/model/model_signal_node.mjs +21 -0
  11. package/esm2022/src/authoring/output.mjs +33 -0
  12. package/esm2022/src/authoring/queries.mjs +1 -1
  13. package/esm2022/src/authoring.mjs +3 -2
  14. package/esm2022/src/core.mjs +7 -5
  15. package/esm2022/src/core_reactivity_export_internal.mjs +2 -2
  16. package/esm2022/src/core_render3_private_export.mjs +5 -4
  17. package/esm2022/src/defer/instructions.mjs +13 -6
  18. package/esm2022/src/di/create_injector.mjs +1 -1
  19. package/esm2022/src/di/injector_compatibility.mjs +1 -1
  20. package/esm2022/src/di/injector_token.mjs +1 -1
  21. package/esm2022/src/di/null_injector.mjs +1 -1
  22. package/esm2022/src/di/r3_injector.mjs +1 -1
  23. package/esm2022/src/errors.mjs +1 -1
  24. package/esm2022/src/hydration/utils.mjs +1 -1
  25. package/esm2022/src/platform/platform_ref.mjs +3 -2
  26. package/esm2022/src/render3/after_render_hooks.mjs +2 -6
  27. package/esm2022/src/render3/apply_value_input_field.mjs +1 -1
  28. package/esm2022/src/render3/component_ref.mjs +2 -2
  29. package/esm2022/src/render3/definition.mjs +2 -2
  30. package/esm2022/src/render3/di.mjs +1 -1
  31. package/esm2022/src/render3/errors_di.mjs +2 -2
  32. package/esm2022/src/render3/features/ng_onchanges_feature.mjs +1 -1
  33. package/esm2022/src/render3/i18n/i18n_locale_id.mjs +2 -2
  34. package/esm2022/src/render3/index.mjs +2 -2
  35. package/esm2022/src/render3/instructions/all.mjs +2 -1
  36. package/esm2022/src/render3/instructions/change_detection.mjs +6 -6
  37. package/esm2022/src/render3/instructions/listener.mjs +13 -4
  38. package/esm2022/src/render3/instructions/queries.mjs +3 -5
  39. package/esm2022/src/render3/instructions/queries_signals.mjs +4 -5
  40. package/esm2022/src/render3/instructions/render.mjs +5 -2
  41. package/esm2022/src/render3/instructions/shared.mjs +2 -2
  42. package/esm2022/src/render3/instructions/styling.mjs +1 -1
  43. package/esm2022/src/render3/instructions/two_way.mjs +70 -0
  44. package/esm2022/src/render3/instructions/write_to_directive_input.mjs +2 -2
  45. package/esm2022/src/render3/interfaces/attribute_marker.mjs +9 -0
  46. package/esm2022/src/render3/interfaces/definition.mjs +2 -8
  47. package/esm2022/src/render3/interfaces/input_flags.mjs +15 -0
  48. package/esm2022/src/render3/interfaces/node.mjs +1 -1
  49. package/esm2022/src/render3/interfaces/query.mjs +1 -1
  50. package/esm2022/src/render3/interfaces/view.mjs +1 -1
  51. package/esm2022/src/render3/jit/environment.mjs +5 -2
  52. package/esm2022/src/render3/node_selector_matcher.mjs +1 -1
  53. package/esm2022/src/render3/query.mjs +17 -3
  54. package/esm2022/src/render3/query_reactive.mjs +51 -75
  55. package/esm2022/src/render3/reactivity/signal.mjs +21 -1
  56. package/esm2022/src/render3/styling/static_styling.mjs +1 -1
  57. package/esm2022/src/render3/util/attrs_utils.mjs +1 -1
  58. package/esm2022/src/render3/util/discovery_utils.mjs +1 -1
  59. package/esm2022/src/render3/util/view_utils.mjs +3 -3
  60. package/esm2022/src/render3/view_ref.mjs +1 -1
  61. package/esm2022/src/util/stringify.mjs +2 -2
  62. package/esm2022/src/version.mjs +1 -1
  63. package/esm2022/testing/src/component_fixture.mjs +4 -4
  64. package/esm2022/testing/src/logger.mjs +3 -3
  65. package/fesm2022/core.mjs +14568 -14203
  66. package/fesm2022/core.mjs.map +1 -1
  67. package/fesm2022/primitives/signals.mjs +1 -1
  68. package/fesm2022/rxjs-interop.mjs +1 -1
  69. package/fesm2022/testing.mjs +4 -4
  70. package/fesm2022/testing.mjs.map +1 -1
  71. package/index.d.ts +362 -11
  72. package/package.json +1 -1
  73. package/primitives/signals/index.d.ts +2 -2
  74. package/rxjs-interop/index.d.ts +1 -1
  75. package/schematics/migrations/block-template-entities/bundle.js +413 -91
  76. package/schematics/migrations/block-template-entities/bundle.js.map +4 -4
  77. package/schematics/ng-generate/control-flow-migration/bundle.js +413 -91
  78. package/schematics/ng-generate/control-flow-migration/bundle.js.map +4 -4
  79. package/schematics/ng-generate/standalone-migration/bundle.js +6087 -5623
  80. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  81. package/testing/index.d.ts +1 -1
  82. package/esm2022/src/authoring/input.mjs +0 -48
  83. package/esm2022/src/authoring/input_signal.mjs +0 -40
  84. package/esm2022/src/authoring/input_signal_node.mjs +0 -22
  85. package/esm2022/src/authoring/input_type_checking.mjs +0 -9
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.2.0-next.1
2
+ * @license Angular v17.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -756,6 +756,8 @@ export declare class ApplicationRef {
756
756
  * detection pass during which all change detection must complete.
757
757
  */
758
758
  tick(): void;
759
+ private detectChangesInAttachedViews;
760
+ private detectChangesInView;
759
761
  /**
760
762
  * Attaches a view so that it will be dirty checked.
761
763
  * The view will be automatically detached when it is destroyed.
@@ -1879,6 +1881,26 @@ export declare type ContentChild = Query;
1879
1881
  */
1880
1882
  export declare const ContentChild: ContentChildDecorator;
1881
1883
 
1884
+ /**
1885
+ * Initializes a content child query. Consider using `contentChild.required` for queries that should
1886
+ * always match.
1887
+ *
1888
+ * @usageNotes
1889
+ * Create a child query in your component by declaring a
1890
+ * class field and initializing it with the `contentChild()` function.
1891
+ *
1892
+ * ```ts
1893
+ * @Component({...})
1894
+ * export class TestComponent {
1895
+ * headerEl = contentChild<ElementRef>('h'); // Signal<ElementRef|undefined>
1896
+ * headerElElRequired = contentChild.required<ElementRef>('h'); // Signal<ElementRef>
1897
+ * header = contentChild(MyHeader); // Signal<MyHeader|undefined>
1898
+ * headerRequired = contentChild.required(MyHeader); // Signal<MyHeader>
1899
+ * }
1900
+ * ```
1901
+ */
1902
+ export declare const contentChild: ContentChildFunction;
1903
+
1882
1904
  /**
1883
1905
  * Type of the ContentChild decorator / constructor function.
1884
1906
  *
@@ -1956,6 +1978,46 @@ export declare interface ContentChildDecorator {
1956
1978
  }): ContentChild;
1957
1979
  }
1958
1980
 
1981
+ /**
1982
+ * Type of the `contentChild` function.
1983
+ *
1984
+ * The contentChild function creates a singular content query. It is a special function that also
1985
+ * provides access to required query results via the `.required` property.
1986
+ *
1987
+ * @developerPreview
1988
+ */
1989
+ export declare interface ContentChildFunction {
1990
+ /**
1991
+ * Initializes a content child query.
1992
+ *
1993
+ * Consider using `contentChild.required` for queries that should always match.
1994
+ * @developerPreview
1995
+ */
1996
+ <LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
1997
+ descendants?: boolean;
1998
+ read?: undefined;
1999
+ }): Signal<LocatorT | undefined>;
2000
+ <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2001
+ descendants?: boolean;
2002
+ read: ProviderToken<ReadT>;
2003
+ }): Signal<ReadT | undefined>;
2004
+ /**
2005
+ * Initializes a content child query that is always expected to match.
2006
+ *
2007
+ * @developerPreview
2008
+ */
2009
+ required: {
2010
+ <LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
2011
+ descendants?: boolean;
2012
+ read?: undefined;
2013
+ }): Signal<LocatorT>;
2014
+ <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2015
+ descendants?: boolean;
2016
+ read: ProviderToken<ReadT>;
2017
+ }): Signal<ReadT>;
2018
+ };
2019
+ }
2020
+
1959
2021
  /**
1960
2022
  * Type of the ContentChildren metadata.
1961
2023
  *
@@ -1974,6 +2036,16 @@ export declare type ContentChildren = Query;
1974
2036
  */
1975
2037
  export declare const ContentChildren: ContentChildrenDecorator;
1976
2038
 
2039
+ export declare function contentChildren<LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
2040
+ descendants?: boolean;
2041
+ read?: undefined;
2042
+ }): Signal<ReadonlyArray<LocatorT>>;
2043
+
2044
+ export declare function contentChildren<LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2045
+ descendants?: boolean;
2046
+ read: ProviderToken<ReadT>;
2047
+ }): Signal<ReadonlyArray<ReadT>>;
2048
+
1977
2049
  /**
1978
2050
  * Type of the ContentChildren decorator / constructor function.
1979
2051
  *
@@ -3327,9 +3399,7 @@ declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDef
3327
3399
  * - Because declared and public name are usually same we only generate the array
3328
3400
  * `['declared', 'public']` format when they differ, or there is a transform.
3329
3401
  * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
3330
- * inconsistent behavior in that it uses declared names rather than minified or public. For
3331
- * this reason `NgOnChanges` will be deprecated and removed in future version and this
3332
- * API will be simplified to be consistent with `output`.
3402
+ * inconsistent behavior in that it uses declared names rather than minified or public.
3333
3403
  */
3334
3404
  declare type DirectiveInputs<T> = {
3335
3405
  [P in keyof T]?: string | [
@@ -6133,6 +6203,14 @@ declare interface LQueries {
6133
6203
  * @param tView
6134
6204
  */
6135
6205
  detachView(tView: TView): void;
6206
+ /**
6207
+ * A method called when a view finishes its creation pass. As a result all impacted
6208
+ * `LQuery` objects (and associated `QueryList`) are marked as dirty. This additional dirty
6209
+ * marking gives us a precise point in time where we can collect results for a given view in an
6210
+ * atomic way.
6211
+ * @param tView
6212
+ */
6213
+ finishViewCreation(tView: TView): void;
6136
6214
  }
6137
6215
 
6138
6216
  /**
@@ -6556,6 +6634,118 @@ export declare enum MissingTranslationStrategy {
6556
6634
  Ignore = 2
6557
6635
  }
6558
6636
 
6637
+ /**
6638
+ * `model` declares a writeable signal that is exposed as an input/output pair on the containing
6639
+ * directive. The input name is taken either from the class member or from the `alias` option.
6640
+ * The output name is generated by taking the input name and appending `Change`.
6641
+ *
6642
+ * Initializes a model with an initial value. If no explicit value
6643
+ * is specified, Angular will use `undefined`.
6644
+ *
6645
+ * Consider using `model.required` for models that don't need an
6646
+ * initial value.
6647
+ *
6648
+ * @usageNotes
6649
+ * Initialize a model in your directive or component by declaring a
6650
+ * class field and initializing it with the `model()` or `model.required()`
6651
+ * function.
6652
+ *
6653
+ * ```ts
6654
+ * @Directive({..})
6655
+ * export class MyDir {
6656
+ * firstName = model<string>(); // string|undefined
6657
+ * lastName = model.required<string>(); // string
6658
+ * age = model(0); // number
6659
+ * }
6660
+ * ```
6661
+ *
6662
+ * @developerPreview
6663
+ */
6664
+ export declare const model: ModelFunction;
6665
+
6666
+ /**
6667
+ * `model` declares a writeable signal that is exposed as an input/output pair on the containing
6668
+ * directive. The input name is taken either from the class member or from the `alias` option.
6669
+ * The output name is generated by taking the input name and appending `Change`.
6670
+ *
6671
+ * The function exposes an API for also declaring required models via the
6672
+ * `model.required` function.
6673
+ *
6674
+ * @usageNotes
6675
+ * Initialize a model in your directive or component by declaring a
6676
+ * class field and initializing it with the `model()` or `model.required()`
6677
+ * function.
6678
+ *
6679
+ * ```ts
6680
+ * @Directive({..})
6681
+ * export class MyDir {
6682
+ * firstName = model<string>(); // string|undefined
6683
+ * lastName = model.required<string>(); // string
6684
+ * age = model(0); // number
6685
+ * }
6686
+ * ```
6687
+ *
6688
+ * @developerPreview
6689
+ */
6690
+ export declare interface ModelFunction {
6691
+ /**
6692
+ * Initializes a model with an initial value. If no explicit value
6693
+ * is specified, Angular will use `undefined`.
6694
+ *
6695
+ * Consider using `model.required` for models that don't need an
6696
+ * initial value.
6697
+ *
6698
+ * @developerPreview
6699
+ */
6700
+ <T>(): ModelSignal<T | undefined>;
6701
+ <T>(initialValue: T, opts?: ModelOptions): ModelSignal<T>;
6702
+ /**
6703
+ * Initializes a required model.
6704
+ *
6705
+ * Users of your directive/component need to bind to the input side of the model.
6706
+ * If unset, a compile time error will be reported.
6707
+ *
6708
+ * @developerPreview
6709
+ */
6710
+ required<T>(opts?: ModelOptions): ModelSignal<T>;
6711
+ }
6712
+
6713
+ /**
6714
+ * @developerPreview
6715
+ *
6716
+ * Options for model signals.
6717
+ */
6718
+ export declare interface ModelOptions {
6719
+ /**
6720
+ * Optional public name of the input side of the model. The output side will have the same
6721
+ * name as the input, but suffixed with `Change`. By default, the class field name is used.
6722
+ */
6723
+ alias?: string;
6724
+ }
6725
+
6726
+ /**
6727
+ * `ModelSignal` represents a special `Signal` for a directive/component model field.
6728
+ *
6729
+ * A model signal is a writeable signal that can be exposed as an output.
6730
+ * Whenever its value is updated, it emits to the output.
6731
+ *
6732
+ * @developerPreview
6733
+ */
6734
+ export declare interface ModelSignal<T> extends WritableSignal<T> {
6735
+ [SIGNAL]: ModelSignalNode<T>;
6736
+ [ɵINPUT_SIGNAL_BRAND_READ_TYPE]: T;
6737
+ [ɵINPUT_SIGNAL_BRAND_WRITE_TYPE]: T;
6738
+ }
6739
+
6740
+ /**
6741
+ * Reactive node type for a model signal. Model signals extend
6742
+ * signals by adding the ability to track subscriptions and to be required.
6743
+ */
6744
+ declare interface ModelSignalNode<T> extends SignalNode<T> {
6745
+ /** Used by the runtime to write a value to the signal input. */
6746
+ applyValueToInputSignal: (node: ModelSignalNode<T>, value: T) => void;
6747
+ }
6748
+
6559
6749
  /**
6560
6750
  * Combination of NgModuleFactory and ComponentFactories.
6561
6751
  *
@@ -10662,6 +10852,29 @@ export declare type ViewChild = Query;
10662
10852
  */
10663
10853
  export declare const ViewChild: ViewChildDecorator;
10664
10854
 
10855
+ /**
10856
+ * Initializes a view child query.
10857
+ *
10858
+ * Consider using `viewChild.required` for queries that should always match.
10859
+ *
10860
+ * @usageNotes
10861
+ * Create a child query in your component by declaring a
10862
+ * class field and initializing it with the `viewChild()` function.
10863
+ *
10864
+ * ```ts
10865
+ * @Component({template: '<div #el></div><my-component #cmp />'})
10866
+ * export class TestComponent {
10867
+ * divEl = viewChild<ElementRef>('el'); // Signal<ElementRef|undefined>
10868
+ * divElRequired = viewChild.required<ElementRef>('el'); // Signal<ElementRef>
10869
+ * cmp = viewChild(MyComponent); // Signal<MyComponent|undefined>
10870
+ * cmpRequired = viewChild.required(MyComponent); // Signal<MyComponent>
10871
+ * }
10872
+ * ```
10873
+ *
10874
+ * @developerPreview
10875
+ */
10876
+ export declare const viewChild: ViewChildFunction;
10877
+
10665
10878
  /**
10666
10879
  * Type of the ViewChild decorator / constructor function.
10667
10880
  *
@@ -10735,6 +10948,38 @@ export declare interface ViewChildDecorator {
10735
10948
  }): ViewChild;
10736
10949
  }
10737
10950
 
10951
+ /**
10952
+ * Type of the `viewChild` function. The viewChild function creates a singular view query.
10953
+ *
10954
+ * It is a special function that also provides access to required query results via the `.required`
10955
+ * property.
10956
+ *
10957
+ * @developerPreview
10958
+ */
10959
+ export declare interface ViewChildFunction {
10960
+ /**
10961
+ * Initializes a view child query. Consider using `viewChild.required` for queries that should
10962
+ * always match.
10963
+ *
10964
+ * @developerPreview
10965
+ */
10966
+ <LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<LocatorT | undefined>;
10967
+ <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
10968
+ read: ProviderToken<ReadT>;
10969
+ }): Signal<ReadT | undefined>;
10970
+ /**
10971
+ * Initializes a view child query that is expected to always match an element.
10972
+ *
10973
+ * @developerPreview
10974
+ */
10975
+ required: {
10976
+ <LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<LocatorT>;
10977
+ <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
10978
+ read: ProviderToken<ReadT>;
10979
+ }): Signal<ReadT>;
10980
+ };
10981
+ }
10982
+
10738
10983
  /**
10739
10984
  * Type of the ViewChildren metadata.
10740
10985
  *
@@ -10750,6 +10995,12 @@ export declare type ViewChildren = Query;
10750
10995
  */
10751
10996
  export declare const ViewChildren: ViewChildrenDecorator;
10752
10997
 
10998
+ export declare function viewChildren<LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<ReadonlyArray<LocatorT>>;
10999
+
11000
+ export declare function viewChildren<LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
11001
+ read: ProviderToken<ReadT>;
11002
+ }): Signal<ReadonlyArray<ReadT>>;
11003
+
10753
11004
  /**
10754
11005
  * Type of the ViewChildren decorator / constructor function.
10755
11006
  *
@@ -11101,10 +11352,14 @@ declare interface ViewRefTracker {
11101
11352
  detachView(viewRef: ViewRef): void;
11102
11353
  }
11103
11354
 
11355
+ /** Symbol used distinguish `WritableSignal` from other non-writable signals and functions. */
11356
+ declare const WRITABLE_SIGNAL: unique symbol;
11357
+
11104
11358
  /**
11105
11359
  * A `Signal` with a value that can be mutated via a setter interface.
11106
11360
  */
11107
11361
  export declare interface WritableSignal<T> extends Signal<T> {
11362
+ [WRITABLE_SIGNAL]: T;
11108
11363
  /**
11109
11364
  * Directly set the signal to a new value, and notify any dependents.
11110
11365
  */
@@ -11139,7 +11394,7 @@ export declare class ɵAfterRenderEventManager {
11139
11394
  /**
11140
11395
  * Executes callbacks. Returns `true` if any callbacks executed.
11141
11396
  */
11142
- execute(): boolean;
11397
+ execute(): void;
11143
11398
  ngOnDestroy(): void;
11144
11399
  /** @nocollapse */
11145
11400
  static ɵprov: unknown;
@@ -11183,6 +11438,7 @@ export declare const enum ɵAnimationRendererType {
11183
11438
  */
11184
11439
  export declare function ɵannotateForHydration(appRef: ApplicationRef, doc: Document): void;
11185
11440
 
11441
+
11186
11442
  /**
11187
11443
  * A set of marker values to be used in the attributes arrays. These markers indicate that some
11188
11444
  * items are not regular attributes and the processing should be adapted accordingly.
@@ -12424,6 +12680,56 @@ export declare function ɵnoSideEffects<T>(fn: () => T): T;
12424
12680
 
12425
12681
  export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
12426
12682
 
12683
+ /**
12684
+ * The `outputs` function allows declaration of outputs in directives and
12685
+ * components.
12686
+ *
12687
+ * Initializes an output that can emit values to consumers of your
12688
+ * directive/component.
12689
+ *
12690
+ * @usageNotes
12691
+ * Initialize an output in your directive by declaring a
12692
+ * class field and initializing it with the `output()` function.
12693
+ *
12694
+ * ```ts
12695
+ * @Directive({..})
12696
+ * export class MyDir {
12697
+ * nameChange = output<string>(); // OutputEmitter<string>
12698
+ * onClick = output(); // OutputEmitter<void>
12699
+ * }
12700
+ * ```
12701
+ *
12702
+ * @developerPreview
12703
+ */
12704
+ export declare function ɵoutput<T = void>(opts?: ɵOutputOptions): ɵOutputEmitter<T>;
12705
+
12706
+
12707
+ /**
12708
+ * An `OutputEmitter` is created by the `output()` function and can be
12709
+ * used to emit values to consumers of your directive or component.
12710
+ *
12711
+ * Consumers of your directive/component can bind to the output and
12712
+ * subscribe to changes via the bound event syntax. For example:
12713
+ *
12714
+ * ```html
12715
+ * <my-comp (valueChange)="processNewValue($event)" />
12716
+ * ```
12717
+ *
12718
+ * @developerPreview
12719
+ */
12720
+ export declare interface ɵOutputEmitter<T> {
12721
+ emit(value: T): void;
12722
+ }
12723
+
12724
+ /**
12725
+ * Options for declaring an output.
12726
+ *
12727
+ * @developerPreview
12728
+ */
12729
+ export declare interface ɵOutputOptions {
12730
+ alias?: string;
12731
+ }
12732
+
12427
12733
  /**
12428
12734
  * Patch the definition of a component with directives and pipes from the compilation scope of
12429
12735
  * a given module.
@@ -12851,6 +13157,8 @@ export declare const enum ɵRuntimeErrorCode {
12851
13157
  COMPONENT_ID_COLLISION = -912,
12852
13158
  IMAGE_PERFORMANCE_WARNING = -913,
12853
13159
  REQUIRED_INPUT_NO_VALUE = -950,
13160
+ REQUIRED_QUERY_NO_VALUE = -951,
13161
+ REQUIRED_MODEL_NO_VALUE = -952,
12854
13162
  RUNTIME_DEPS_INVALID_IMPORTED_TYPE = 1000,
12855
13163
  RUNTIME_DEPS_ORPHAN_COMPONENT = 1001
12856
13164
  }
@@ -13031,7 +13339,7 @@ export declare function ɵtriggerResourceLoading(tDetails: TDeferBlockDetails, l
13031
13339
  *
13032
13340
  * @param string
13033
13341
  * @param maxLength of the output string
13034
- * @returns elispsed string with ... in the middle
13342
+ * @returns ellipsed string with ... in the middle
13035
13343
  */
13036
13344
  export declare function ɵtruncateMiddle(str: string, maxLength?: number): string;
13037
13345
 
@@ -13055,6 +13363,14 @@ export declare function ɵunwrapSafeValue(value: ɵSafeValue): string;
13055
13363
 
13056
13364
  export declare function ɵunwrapSafeValue<T>(value: T): T;
13057
13365
 
13366
+ /**
13367
+ * Utility function used during template type checking to extract the value from a `WritableSignal`.
13368
+ * @codeGenApi
13369
+ */
13370
+ export declare function ɵunwrapWritableSignal<T>(value: T | {
13371
+ [WRITABLE_SIGNAL]: T;
13372
+ }): T;
13373
+
13058
13374
  /**
13059
13375
  * Indicates whether to use the runtime dependency tracker for scope calculation in JIT compilation.
13060
13376
  * The value "false" means the old code path based on patching scope info into the types will be
@@ -13072,7 +13388,7 @@ export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, ChangeDetectorR
13072
13388
  * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
13073
13389
  */
13074
13390
  private _cdRefInjectingView?;
13075
- private readonly notifyErrorHandler;
13391
+ readonly notifyErrorHandler: boolean;
13076
13392
  private _appRef;
13077
13393
  private _attachedToViewContainer;
13078
13394
  get rootNodes(): any[];
@@ -14033,18 +14349,17 @@ export declare function ɵɵconditional<T>(containerIndex: number, matchingTempl
14033
14349
  export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: ProviderToken<unknown> | string | string[], flags: QueryFlags, read?: any): void;
14034
14350
 
14035
14351
  /**
14036
- * Registers a QueryList, associated with a content query, for later refresh (part of a view
14037
- * refresh).
14352
+ * Creates a new content query and binds it to a signal created by an authoring function.
14038
14353
  *
14039
14354
  * @param directiveIndex Current directive index
14355
+ * @param target The target signal to which the query should be bound
14040
14356
  * @param predicate The type for which the query will search
14041
14357
  * @param flags Flags associated with the query
14042
14358
  * @param read What to save in the query
14043
- * @returns QueryList<T>
14044
14359
  *
14045
14360
  * @codeGenApi
14046
14361
  */
14047
- export declare function ɵɵcontentQuerySignal<T>(target: Signal<T>, directiveIndex: number, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
14362
+ export declare function ɵɵcontentQuerySignal<T>(directiveIndex: number, target: Signal<T>, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
14048
14363
 
14049
14364
  /**
14050
14365
  * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
@@ -14763,6 +15078,7 @@ export declare interface ɵɵInjectorDef<T> {
14763
15078
  imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
14764
15079
  }
14765
15080
 
15081
+
14766
15082
  /** Flags describing an input for a directive. */
14767
15083
  export declare enum ɵɵInputFlags {
14768
15084
  None = 0,
@@ -16951,6 +17267,41 @@ export declare function ɵɵtrustConstantHtml(html: TemplateStringsArray): Trust
16951
17267
  */
16952
17268
  export declare function ɵɵtrustConstantResourceUrl(url: TemplateStringsArray): TrustedScriptURL | string;
16953
17269
 
17270
+ /**
17271
+ * Function used inside two-way listeners to conditionally set the value of the bound expression.
17272
+ *
17273
+ * @param target Field on which to set the value.
17274
+ * @param value Value to be set to the field.
17275
+ *
17276
+ * @codeGenApi
17277
+ */
17278
+ export declare function ɵɵtwoWayBindingSet<T>(target: unknown, value: T): boolean;
17279
+
17280
+ /**
17281
+ * Adds an event listener that updates a two-way binding to the current node.
17282
+ *
17283
+ * @param eventName Name of the event.
17284
+ * @param listenerFn The function to be called when event emits.
17285
+ *
17286
+ * @codeGenApi
17287
+ */
17288
+ export declare function ɵɵtwoWayListener(eventName: string, listenerFn: (e?: any) => any): typeof ɵɵtwoWayListener;
17289
+
17290
+ /**
17291
+ * Update a two-way bound property on a selected element.
17292
+ *
17293
+ * Operates on the element selected by index via the {@link select} instruction.
17294
+ *
17295
+ * @param propName Name of property.
17296
+ * @param value New value to write.
17297
+ * @param sanitizer An optional function used to sanitize the value.
17298
+ * @returns This function returns itself so that it may be chained
17299
+ * (e.g. `twoWayProperty('name', ctx.name)('title', ctx.title)`)
17300
+ *
17301
+ * @codeGenApi
17302
+ */
17303
+ export declare function ɵɵtwoWayProperty<T>(propName: string, value: T | WritableSignal<T>, sanitizer?: SanitizerFn | null): typeof ɵɵtwoWayProperty;
17304
+
16954
17305
 
16955
17306
  /**
16956
17307
  * Validation function invoked at runtime for each binding that might potentially
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "17.2.0-next.1",
3
+ "version": "17.2.0-rc.0",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.2.0-next.1
2
+ * @license Angular v17.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -14,7 +14,7 @@ declare type ComputedGetter<T> = (() => T) & {
14
14
  *
15
15
  * `Computed`s are both producers and consumers of reactivity.
16
16
  */
17
- declare interface ComputedNode<T> extends ReactiveNode {
17
+ export declare interface ComputedNode<T> extends ReactiveNode {
18
18
  /**
19
19
  * Current value of the computation, or one of the sentinel values above (`UNSET`, `COMPUTING`,
20
20
  * `ERROR`).
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v17.2.0-next.1
2
+ * @license Angular v17.2.0-rc.0
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */