https://github.com/angular/angular

sort by:
Revision Author Date Message Commit Date
203a3d5 release: cut the v17.0.7 release 14 December 2023, 00:35:33 UTC
c16b5e8 fix(core): Multiple subscribers to ApplicationRef.isStable should all see values (#53541) The behavior of `ApplicationRef.isStable` changed in 16.1 due to https://github.com/angular/angular/commit/28c68f709cdc930e12bac51a266e7bf790656034. This change added a `share` to the `isStable` observable, which prevents additional subscribers from getting a value until a new one emits. One solution to the problem would be `shareReplay(1)`. However, that would increase the bundle size since we do not use `shareReplay` elsewhere. Instead, we don't even really need to share the observable. The `Observable` available in `ApplicationRef.isStable` before the above commit was the zone stable observable, without a `share`. The new behavior adds only an additional observable to the stream, `hasPendingTasks` (a `BehaviorSubject`). The observables in this stream are not expensive to subscribe to. The only one with side effects is the `isStable` (because it subscribes to onStable), but that one already has the `share` operator on it. Omitting the `share` in `ApplicationRef` also means that applications on `zoneless` will not have to pay the cost of the operator when we make zones optional because the zone stable observable is the only place we use it. PR Close #53541 13 December 2023, 19:26:52 UTC
79d8736 build: remove `seek-bzip` dependency (#53536) `seek-bzip` isn't used anymore, let's remove it. PR Close #53536 13 December 2023, 19:26:13 UTC
1c55c49 refactor(migrations): CF migration - add support for not reformatting i18n tags (#53538) Internationalization is whitespace sensitive. This change updates the formatting code to process for i18n attributes and prevent reformatting those sections of the template. PR Close #53538 13 December 2023, 17:34:55 UTC
d5c631b fix(platform-browser): Get correct base path when using "." as base href when serving from the file:// protocol. (#53547) Using http://a as the base URL returns / instead of the actual base path when using the file:// protocol. Using document.baseURI addresses this. Fixes #53546 PR Close #53547 13 December 2023, 17:26:56 UTC
5b4add2 fix(core): update feature usage marker (#53542) This commit updates the name of the 'performance.mark' counter used to track feature usage. It now matches the name agreed upon by W3C for this use case: https://github.com/w3c/user-timing/pull/108 PR Close #53542 13 December 2023, 17:24:11 UTC
e88a12d fix(migrations): cf migration validate structure of ngswitch before migrating (#53530) This fix handles the common case where an ngswitch might have invalid syntax post migration. This is likely due to using elements other than case or default underneath the ngswitchcase. This will fail out of the migration for that file when these cases are detected with a useful console message. fixes: #53234 PR Close #53530 13 December 2023, 17:23:17 UTC
c9a1c6f fix(migrations): cf migration - undo changes when html fails to parse post migration (#53530) In the case that a template has some sort of structural issue prior to migrating, like a tag that is not properly closed resulting in invalid HTML post migration, this will attempt to parse the html after migrating and revert to the original structure. An error during migration will be reported out instead. PR Close #53530 13 December 2023, 17:23:16 UTC
4772da7 refactor(core): remove no longer needed FlushableEffectRunner private export (#53525) It is no longer needed after https://github.com/angular/angular/commit/70a442eb023096b329ea2c0c7010df5339993fe7 PR Close #53525 13 December 2023, 17:22:42 UTC
cdedd00 refactor(compiler): Support `o.WrappedNodeExpr` inside expression conversion (#53478) `o.WrappedNodeExpr` can show up in some cases, when a host binding's value is inside a TS expression. It's an open question whether we will need to support all of the TS expression types as a result. PR Close #53478 13 December 2023, 17:21:54 UTC
0427d7a refactor(compiler): Fix a bug involving listeners with targets (#53478) For some reason, the parser reuses the same field to store the animation phase and the event target. We were incorrectly interpreting the presence of any value on that field as an animation phase, leading us to incorrectly emit synthetic listener instructions for listeners on events with targets. This bug is now fixes. PR Close #53478 13 December 2023, 17:21:54 UTC
79a7e02 refactor(compiler): Support `$any` in host bindings (#53478) `$any` should be interpreted as a cast, not as a context read of a variable called `$any`. This already worked in template compilations, but the relevant phase was not enabled for host bindings. PR Close #53478 13 December 2023, 17:21:54 UTC
4fd5409 fix(compiler): handle ambient types in input transform function (#51474) Fixes that the compiler was throwing an error if an ambient type is used inside of an input `transform` function. The problem was that the reference emitter was trying to write a reference to the ambient type's source file which isn't necessary. Fixes #51424. PR Close #51474 13 December 2023, 17:15:17 UTC
57ac806 feat(docs-infra): put the editor back in angular/angular (#53540) Puts the editor back in angular/angular until we are able to set up a package containing a worker as needed for this project PR Close #53540 12 December 2023, 23:48:45 UTC
9a91e0f docs: add state of js survey link (#53537) PR Close #53537 12 December 2023, 22:32:12 UTC
e750e4e fix(router): provide more actionable error message when route is not matched in production mode (#53523) Prior to this commit when a route is not matched and the application was running in production mode an `[Error]: NG04002` was logged in the console. This however, is not actionable when the application is running on the server where there can be multiple pages being rendered at the same time. Now we change this to also log the route example: `[Error]: NG04002: 'products/Jeep'`. Closes #53522 PR Close #53523 12 December 2023, 22:31:25 UTC
a603338 fix(compiler-cli): generate less type checking code in for loops (#53515) The ops for the implicit variables in `@for` loops (e.g. `$index`) are marked as being mandatory which means that they're generated even if they aren't used. These changes make them optional so they're only added when necessary. PR Close #53515 12 December 2023, 22:30:36 UTC
27235f1 refactor(compiler): Add sanitization support for host bindings (#53513) Adds support for sanitizing host bindings. Since the tag name of the element the host binding is being set on isn't always known, we have to consider multiple possible security contexts. This commit also adds additional tests to help verify correct behavior of the sanitization logic for different edge cases. PR Close #53513 12 December 2023, 22:30:11 UTC
659b88d refactor(core): Update flaky test with wait condition (#53437) The tests in this commit have been flaky commonly due to the elements not being found. Hopefully using `ExpectedConditions` helps. PR Close #53437 12 December 2023, 17:09:10 UTC
b75aca1 fix(migrations): CF migration only remove newlines of changed template content (#53508) The formatting logic would eliminate all newlines in updated template code. This adds start and end markers for tracking when the formatter is in a block of template code that changed or not. It should leave behind any newlines that are outside of a migrated section. fixes: #53494 PR Close #53508 12 December 2023, 17:03:16 UTC
d232ea1 fix(migrations): fix cf migration import removal when errors occur (#53502) When migrating a component and the associated external template, if errors occur, the component should not remove the common module imports. This fix should allow the application to still build in that instance. PR Close #53502 12 December 2023, 17:02:32 UTC
617dc53 docs: Smart quote that breaks code block (#53488) Signed-off-by: Aditya Kumar <aditya.kumar60@infosys.com> PR Close #53488 12 December 2023, 17:02:02 UTC
087e06a refactor(compiler): Simplify how sanitizers are generated (#53473) Previously we generated an intermediate expression which was later converted into a symbol import expression for the sanitizer function. This commit simplifies the behavior by just generating the symbol import from the beginning PR Close #53473 12 December 2023, 17:00:36 UTC
93264b5 refactor(compiler): Generate trusted const values for extracted attrs (#53473) Use the DomElementSchemaRegistry to determine the correct security context for static attributes, and pass it along during ingestion. Then during the resolve sanitizers phase, use the security context to determine if a trusted value function is needed PR Close #53473 12 December 2023, 17:00:36 UTC
68d111c perf(core): avoid changes Observable creation on QueryList (#53498) The changes Observable (impl: EventEmitter) on the QueryList is initalized lazy - it is created only if someone calls a geter to get a hand on its instance. But the destroy method was calling this getter thus creating a new Observable even if no one subscribed to it. This commit changes the destroy logic to skip creation of an EventEmitter if it wasn't initialized. PR Close #53498 12 December 2023, 17:00:08 UTC
17610fa build: remove `incremental-dom` dependency (#53474) The usage of this dependency has been removed in #50108 PR Close #53474 11 December 2023, 22:04:53 UTC
7fa791e refactor(compiler): Make some fixups to template binidng ingestion (#53457) Responding to comments on #53457 about the previous sequence of template binding PRs. PR Close #53457 11 December 2023, 22:03:43 UTC
7967d28 refactor(compiler): Fix animation bindings on structural elements (#53457) Consider the case: ``` <button *ngIf="true" [@anim]="field"></button> ``` Only the inner `button` should recieve a `property` instruction for the animation binding. We were previously emitting one for the implicit `ng-template` as well, and collecting it into the consts for the `ng-template`. Both of these issues are now fixed. PR Close #53457 11 December 2023, 22:03:43 UTC
a15a012 refactor(compiler): Fix some behavior with bindings on explicit `ng-template` elements (#53457) The behavior of explicit bindings on `ng-template`s was untested, and we differed from `TemplateDefinitionBuilder` significantly. We now have much more similar behavior, although not 100% identical. For example, consider this templarte: ``` <ng-template l="l1" [p]="p1" [attr.a]="a1" [class.c]="c1"></ng-template> ``` It's not clear what a class binding on an `ng-template` would actually do. Nonetheless, it's well-defined behavior in TemplateDefinitionBuilder, which emits `property` instructions for all three bindings, and people actually do this in google3. Note that some of these bindings don't really make much sense, but we have to support them for compatibility purposes. See comments for an in-depth explanation of all the logic. Also, add a test to exercise the problematic case. PR Close #53457 11 December 2023, 22:03:43 UTC
b2e5a20 refactor(compiler): Eliminate `BindingFlags` and reorder parameters of `createTemplateBinding` (#53457) It turns out that `BindingFlags.BindingTargetsTemplate` is actally a redundant property! It will be true in either of the following cases: 1. The template is a normal non-structural `ng-template`. We already know this from `TemplateKind`. 2. The binding came from `templateAttrs` (instead of `attrs`). We have this information in `BindingFlags.IsStructuralTemplateAttribute`. Therefore, I can just eliminate `BindingFlags.BindingTargetsTemplate`. There's no reason to keep `BindingFlags` around for a single value, so I convert `BindingFlags.IsStructuralTemplateAttribute` to a boolean parameter (with the eventual goal of eliminating it entirely). Additionally, because element binding ingestion now calls `ir.createBindingOp` inline, it was difficult to compare it to template binding ingestion, which uses the `createTemplateBinding` helper. I have changed the parameter order of `createTemplateBinding` to closely mimic `ir.createBindingOp`. This will both make the code easier to read, and allow me to easily replace one with the other in the future. Lastly: the template binding ingestion function is the site of much of the binding ingestion complexity. Add an explanatory function comment. PR Close #53457 11 December 2023, 22:03:43 UTC
694e6ae refactor(compiler): Split up binding ingestion for elements and templates (#53457) Previously, we had `ingestBindings` and `ingestBinding`, which required tons of cases to support both elements and templates. Now, we have two separate functions, `ingestElementBindings` and `ingestTemplateBindings`. Thanks to the previous refactoring work, `ingestBinding` is now extremely compact. In fact, it's so compact that, in the elements case, it can just be inlined! Therefore, element binding ingestion is now quite easy to read. The template case continues to be pretty gnarly, although I have already removed some code. In subsequent commits, we will simplify it even further. PR Close #53457 11 December 2023, 22:03:43 UTC
876f90a refactor(compiler): Simplify some code in ingest (#53457) Currently Template Pipeline's ingest phase is very complex, especially when it comes to ingesting bindings. In this commit, we make some superficial simplifications, in preparation for a larger refactoring. For example, we pull out common code such as `convertAstWithInterpolation` and the `i18n.Message` checks. This enormously shrinks the main binding ingestion functions. In addition, we reorder the binding kind and flags code above `ingestBindings`, so that `ingestBindings` and `ingestBinding` can be viewed together. PR Close #53457 11 December 2023, 22:03:43 UTC
1faa61f refactor(compiler): Don't emit class and style bindings on structural template views (#53457) The Template Pipeline has had a number of tricky bugs involving bindings on structural elements. Consider this template: ``` <div *ngIf="true" [class.bar]="field"></div> ``` We were incorrectly emitting `ɵɵclassProp` on *both* the template's view, and the inner view. The solution is to just emit an extracted attribute on the enclosing template, so it still shows up in the const array, but does not affect the update block. We will refactor binding ingestion soon, but this commit improves our correctness before any big refactor. PR Close #53457 11 December 2023, 22:03:43 UTC
9bb34a2 build: drop rxjs_umd_modules as it is unused (#53506) Drop rxjs_umd_modules bazel target as its not longer used and will become a blocker to rxjs>6 PR Close #53506 11 December 2023, 21:35:50 UTC
1ea8a14 refactor(docs-infra): move versions information into the application (#53501) Move the versions information into the application for now PR Close #53501 11 December 2023, 19:21:34 UTC
ba19d80 refactor(docs-infra): refactor adev to build using architect (#53497) Refactor adev as needed to build using architect. PR Close #53497 11 December 2023, 19:21:08 UTC
24d8aa6 fix(zone.js): Promise.resolve(subPromise) should return subPromise (#53423) In the original `Promise` impelmentation, zone.js follow the spec from https://promisesaplus.com/#point-51. ``` const p1 = Promise.resolve(1); const p2 = Promise.resolve(p1); p1 === p2; // false ``` in this case, `p2` should be the same status with `p1` but they are still different instances. And for some edge case. ``` class MyPromise extends Promise { constructor(sub) { super((res) => res(null)); this.sub = sub; } then(onFufilled, onRejected) { this.sub.then(onFufilled, onRejected); } } const p1 = new Promise(setTimeout(res), 100); const myP = new MyPromise(p1); const r = await myP; r === 1; // false ``` So in the above code, `myP` is not the same instance with `p1`, and since `myP` is resolved in constructor, so `await myP` will just pass without waiting for `p1`. And in the current `tc39` spec here https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-resolve `Promise.resolve(subP)` should return `subP`. ``` const p1 = Promise.resolve(1); const p2 = Promise.resolve(p1); p1 === p2; // true ``` So the above `MyPromise` can wait for the `p1` correctly. PR Close #53423 11 December 2023, 18:55:12 UTC
044cb55 perf(core): optimize memory allocation when reconcilling lists (#52245) This change replaces the implementation of the multi-map used to store detached views while reconciling lists. The new implementation optimizes memory allocation for such map and avoid arrays allocation when there are no duplicated keys. PR Close #52245 08 December 2023, 23:00:14 UTC
f88b77b build: migrate adev generation to @angular/docs package (#53458) Use the new rule from @angular/docs for generating guides PR Close #53458 08 December 2023, 22:33:34 UTC
2f26159 build: remove already migrated adev build tooling (#53454) Remove the tooling as its now in dev-infra PR Close #53454 08 December 2023, 22:32:55 UTC
abc0b15 refactor(compiler): Add i18n support for @defer blocks (#53440) Pass through the i18n placeholders for the various parts of the defer block during ingestion so its i18n message can be constructed PR Close #53440 08 December 2023, 22:32:31 UTC
4ed5845 refactor(compiler): Ensure consistent handling of @empty template (#53440) Phases that walk through the views by following template and repeater ops need to remember to check the empty view as well for repeaters. This commit adds fixes for phases that were missing it, or comments explaining why its not handled. PR Close #53440 08 December 2023, 22:32:31 UTC
101302b refactor(compiler): Add i18n support for @for blocks (#53440) @for does not use actual TemplateOps, but instead has a similar RepeaterCreateOp. This commit adds support for this op to the relevant i18n phases. PR Close #53440 08 December 2023, 22:32:31 UTC
96ab999 fix(migrations): CF Migration - ensure bound ngIfElse cases ignore line breaks (#53435) When using ternaries or other expressions in bound if / else cases, it is possible that line breaks could end up affecting template replacement. fixes: #53428 PR Close #53435 08 December 2023, 22:31:25 UTC
c4d6dad refactor(core): Clean up subscription handling in ComponentFixture (#53426) The subscriptions can be managed by a single subscription and unsubscribe on destroy PR Close #53426 08 December 2023, 22:30:14 UTC
0004eed refactor(core): Separate application and platform files even more (#53371) This separates application and platform code into even more files. This now removes the ciruclar dependency between scheduling and application ref. PR Close #53371 08 December 2023, 22:29:47 UTC
469fe25 refactor(core): Move code out of application_ref (#53371) The application_ref is somewhat of a dumping ground for code. This commit moves things around into more appropriately separate files. PR Close #53371 08 December 2023, 22:29:47 UTC
9932439 test(compiler): fix legacy message id test (#53459) This test actually passes, template pipeline just orders the translated messages and consts array differently. Since the order isn't important, we just fork off an alternate golden file for template pipeline. PR Close #53459 08 December 2023, 22:28:28 UTC
a398c55 refactor(compiler): Fix out-of-order i18n issue (#53405) Fix a bug in the i18n retargeting and reordering phase. PR Close #53405 08 December 2023, 17:37:57 UTC
a169dd0 refactor(compiler): Fix extra attribute on ng-template (#53405) We no longer emit extra attribute instructions on certain `ng-template` elements with attributes. PR Close #53405 08 December 2023, 17:37:57 UTC
0bacc03 refactor(compiler): Add an additional failing test about i18n ordering (#53405) I discovered this failure while looking at presubmit results. We appear to still have ordering issues, when more update ops are present. PR Close #53405 08 December 2023, 17:37:57 UTC
de6ec5f refactor(compiler): Add failing tests about structural attr bindings (#53405) While running a g3 presubmit, I discovered two related novel failure modes: 1. Simple case: this new test uses an `ngFor` structural directive, which binds a context variable. That variable is immediately used in an attribute binding. It looks like we generate an extra attribute instruction, which might result in an invalid property read at runtime. 2. Complex case: this is another attribute binding, this time on a structural element, inside of an `ng-template`. Not sure what's going on here. PR Close #53405 08 December 2023, 17:37:57 UTC
6dc3388 refactor(compiler): Enable meaning_description i18n test in template pipeline (#53405) The meaning decription test has different i18n message orders, as well as a different const order, but it is in fact passing. PR Close #53405 08 December 2023, 17:37:56 UTC
24177e9 refactor(compiler): Keep a TemplateKind on various binding ops (#53405) Previously, binding ops only knew whether they applied to a structural template (and even this was actually very misleading!). Now, binding ops have full information about what kind of template they apply to, if any (e.g. plain template, structural template, etc). Additionally, each binding knows whether it `IsStructuralTemplateAttribute`, which is a property of the binding rather than the template target. In the future, we should refactor this to unify the various flags that can describe binding types, as well as the flags that describe template targets, into a single and comprehensive field on binding ops. PR Close #53405 08 December 2023, 17:37:56 UTC
16b7fca refactor(compiler): Move the creation of i18n attribute contexts into a phase (#53405) Previously, we created i18n contexts for i18n attributes in ingest. This turned out to be the wrong approach, because we don't always want to produce i18n messages for all i18n attributes! In fact, several kinds of i18n attributes on elements with structural directives should not produce their own messages. This commit also contains related refactors to fix one such structural directives test. PR Close #53405 08 December 2023, 17:37:56 UTC
fd54911 refactor(compiler): Don't create i18n context ops for attribute bindings on structural templates (#53405) When a binding is present on an element with a structural directive, that binding is parsed onto *both* the synthetic `ng-template`, as well as the inner element. However, we do not want to create different i18n messages for both bindings; we only want to generate a new i18n message for the inner, "real" element. PR Close #53405 08 December 2023, 17:37:56 UTC
19daa07 refactor(compiler): Listeners should be ingested before i18nStart (#53405) Listener instructions should not be inside the i18n block. In order to avoid this, we ingest bindings on an element before starting the i18n block. We previously missed this case because almost all bindings result in *update* instructions, which don't need to be ordered relative to i18nStart/i18nEnd create instructions. However, listeners are the only kind of binding that gets ingested into the create block. PR Close #53405 08 December 2023, 17:37:56 UTC
3c12cd7 refactor(compiler): Fix i18nExp moving phase in Template Pipeline (#53405) Previously, our i18n slot moving process was buggy. Specifically, it was not resilient to cases in which a create op consumed a slot, but no update ops depended on that slot. The new algorithm fixes this issue, and is also easier to understand. PR Close #53405 08 December 2023, 17:37:56 UTC
17dbf8b fix(core): remove signal equality check short-circuit (#53446) The PR https://github.com/angular/angular/pull/52465 introduced short-circuit for the signal equality invocation - with the reasoning that the equality function should never return false for arguments with the same references. In practice it turned out that it is rather surprising and the subsequent PR https://github.com/angular/angular/pull/52532 added a warning when the short-circuit was taking priority over the equality function. Still, the presence of the short-circuit prevents people from mutating objects in place and based on https://github.com/angular/angular/issues/52735 this is a common and desired scenario. This change removes the short-circuit altogether and thus fixes the mentioned issue. We do recognize that removing short-circuit exposes developers to the potentially surprising logic where mutated in-place change won't be propagated throug the reactivity graph (due to the deault equality function). But we assume that this might be less surprising / more desirable as compared to the short-circuit logic. Fixes #52735 PR Close #53446 08 December 2023, 15:05:35 UTC
58ed76b fix(core): Avoid refreshing a host view twice when using transplanted views (#53021) This change fixes and issue where the expectation was that change detection always goes through `detectChangesInView`. In reality, `detectChangesInternal` directly calls `refreshView` and refreshes a view directly without checking if it was dirty (to my discontent). This update changes the implementation of `detectChangesInternal` to actually be "detect changes" not "force refresh of root view and detect changes". In addition, it adds the refresh flag to APIs that were previously calling `detectChangesInternal` so we get the same behavior as before (host view is forced to refresh). Note that the use of `RefreshView` instead of `Dirty` is _intentional_ here. The `RefreshView` flag is cleared before refreshing the view while the `Dirty` flag is cleared at the very end. Using the `Dirty` flag could have consequences because it is a more long-lasting change to the view flags. Because `detectChangesInView` will immediately clear the `RefreshView` flag, this change is much more limited and does not result in a different set of flags during the view refresh. PR Close #53021 07 December 2023, 20:05:24 UTC
543df3d fix(migrations): ensure we do not overwrite prior template replacements in migration (#53393) This fixes a bug where only the last replacement of a template placeholder would apply. fixes: #53383 PR Close #53393 07 December 2023, 17:36:03 UTC
65f9115 refactor(core): Run ComponentFixture constructor in injection context (#53400) The component fixture dependencies have to be passed in manually. This is a bit annoying to manage as we expand which dependencies are needed. Instead, we can run the constructor in the TestBed injection context and move the dependencies into the component fixture code, as is done with other constructors in Angular. PR Close #53400 07 December 2023, 17:35:25 UTC
049e4ab release: cut the v17.0.6 release 06 December 2023, 18:15:26 UTC
e8d01f9 refactor(migrations): Update comments to be more accurate (#53396) This comment change better clarifies what these regexes do which should alleviate future confusion. PR Close #53396 06 December 2023, 17:45:44 UTC
c509ba4 Revert "Revert "fix(router): Ensure canMatch guards run on wildcard routes (#53239)" (#53339)" (#53342) This reverts commit ac8eb5b943d34b8ab68a51b3d46cedafa037d03d. PR Close #53342 06 December 2023, 17:44:19 UTC
aaf199f refactor(compiler): Support unary ops in template pipeline (#53376) Template Pipeline can now ingest and emit unary ops, such as `+` and `-`. PR Close #53376 06 December 2023, 17:43:36 UTC
648edaa refactor(compiler): template pipeline support for i18n blocks (#53376) Blocks can contain i18n expressions. We already have most of the logic to make them work; we were just missing some ingestion code. PR Close #53376 06 December 2023, 17:43:36 UTC
755356c refactor(compiler): Separate ownership and target for i18n expressions, and various refactors (#53376) I18n expressions logically have both a target and an owner: - For i18n text expressions, the owner is the i18nStart instruction. The target is initially the same, but later moves to be the last slot consumer in the i18n block. - For i18n attribute expressions, the owner is the I18nAttributes config instruction, whereas the target is the ElementCreate that hosts the attribute. This refactor makes the code clearer in quite a few plases. Additionally, we now perform a lot of the i18n processing earlier. For example, re-targeting and re-ordering of i18n expressions happens *before* apply instructions are generated. As a result, the re-ordering logic is a lot simpler. These changes also have consequences on i18n const collection, along with a couple other minor changes. PR Close #53376 06 December 2023, 17:43:36 UTC
66ecf4c fix(compiler-cli): add compiler option to disable control flow content projection diagnostic (#53387) These changes add an option to the `extendedDiagnostics` field that allows the check from #53190 to be disabled. This is a follow-up based on a recent discussion. PR Close #53387 06 December 2023, 17:43:10 UTC
74e6ce5 fix(compiler-cli): add diagnostic for control flow that prevents content projection (#53387) This is a follow-up to the fix from #52414. It adds a diagnostic that will tell users when a control flow is preventing its direct descendants from being projected into a specific component slot. PR Close #53387 06 December 2023, 17:43:10 UTC
cfa80dc test(core): add tests for control flow content projection with ng-container (#53387) The control flow projection diagnostic will mention `ng-container` as a workaround for projection multiple nodes. These changes add a couple of tests to ensure that the approach works. PR Close #53387 06 December 2023, 17:43:10 UTC
ec9cc38 refactor(compiler-cli): expose ng-content selectors and preserveWhitespaces during template type checking (#53387) These changes expose the `ngContentSelectors` and `preserveWhitespaces` metadata to the TCB so they can be used in the next commit to implement a new diagnostic. PR Close #53387 06 December 2023, 17:43:10 UTC
cbbd9f3 refactor(compiler): expose utility for creating CSS selectors from AST nodes (#53387) When doing directive matching in the compiler, we need to be able to create a selector from an AST node. We already have the utility, but these changes simplify the public API and expose it so it can be used in `compiler-cli`. PR Close #53387 06 December 2023, 17:43:10 UTC
836aeba fix(migrations): Change CF Migration ng-template placeholder generation and handling (#53394) Using more unique characters makes it easier to parse placeholders that may contain JS logic, making it more flexible. fixes: #53386 fixes: #53385 fixes: #53384 PR Close #53394 06 December 2023, 17:42:43 UTC
d4fdba5 Revert "refactor(core): output an error guide link in prod mode (#53324)" (#53392) This reverts commit f245aba782fda0ffdb5d2e9d81310956d11b57a4. Reason: breaks g3 PR Close #53392 06 December 2023, 15:23:24 UTC
7c863d7 refactor(devtools): run control flow migration. (#53353) Let's update the devtools with the latest improvements ! PR Close #53353 06 December 2023, 01:20:09 UTC
2a4e3f5 fix(migrations): handle templates outside of component in cf migration (#53368) If a template is passed in as an input, the ng-template will not exist in the same component template. This will leave a template placeholder behind. This fix ensures that template placeholder gets turned into a template outlet. fixes: #53361 PR Close #53368 06 December 2023, 01:19:37 UTC
5104a89 fix(migrations): handle nested ng-template replacement safely in CF migration (#53368) When there are ng-templates nested inside other ng-templates, the replacement and removal of the templates gets disrupted. Re-processing the templates in the file along the way resolves this issue. fixes: #53362 PR Close #53368 06 December 2023, 01:19:37 UTC
708131d refactor(compiler): Initial support for i18n attributes (#53341) Add support for i18n attributes: - Generate i18n contexts from i18n attributes, and extract the eventual messages into the constant pool. - Emit I18nAttributes config instructions when needed. - Use the generated i18n variable in the appropriate places, including extracted attribute instructions, as well as I18nAttributes config arrays. PR Close #53341 06 December 2023, 01:13:59 UTC
20ea149 refactor(devtools): enables typescript strict option (#53340) Enabling `strict` is part of an effort to improve the quality of the devtools code base. One of the direct side effect is to enable `noImplicitAny`, `strictPropertyInitialization` and `strictBindCallApply`. This commit also replaces `fullTemplateTypeCheck` with `stringTemplates`. PR Close #53340 05 December 2023, 20:42:56 UTC
2d2eaec docs: fixed wrong template string placeholder (#53286) PR Close #53286 05 December 2023, 05:50:35 UTC
40e8577 build: set up markdown pipeline for the reference section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:14 UTC
dae3e24 build: set up markdown pipeline for the tools section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:14 UTC
036a2fd build: set up markdown pipeline for service-workers section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:14 UTC
9140b02 build: set up markdown pipeline for runtime-performance part of the best-practices section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
857f29b build: set up markdown pipeline for best-practices section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
1e42486 build: set up markdown pipeline for introduction section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
8fc9ff0 build: set up markdown pipeline for essentials of the introduction section (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
cb460f8 build: set up markdown pipeline for testing directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
a18b6b9 build: set up markdown pipeline for templates directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
ef55336 build: set up markdown pipeline for signals directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:13 UTC
4736efc build: set up markdown pipeline for pipes directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
069dcd1 build: set up markdown pipeline for routing directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
0d7f679 build: set up markdown pipeline for ngmodules directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
24c4c77 build: set up markdown pipeline for i18n directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
cb34d35 build: set up markdown pipeline for http directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
7af3237 build: set up markdown pipeline for forms directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:12 UTC
6312d63 build: set up markdown pipeline for directives directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:11 UTC
7e2fe81 build: set up markdown pipeline for di directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:11 UTC
86f0f4a build: set up markdown pipeline for components directory of the content guide (#53290) Set up the markdown pipeline to include the required source files. PR Close #53290 05 December 2023, 05:47:11 UTC
back to top