feat(core): add API to inject attributes on the host node#54604
Closed
crisbeto wants to merge 1 commit intoangular:mainfrom
Closed
feat(core): add API to inject attributes on the host node#54604crisbeto wants to merge 1 commit intoangular:mainfrom
crisbeto wants to merge 1 commit intoangular:mainfrom
Conversation
ce6a023 to
3487af0
Compare
jessicajaniuk
approved these changes
Feb 26, 2024
Contributor
jessicajaniuk
left a comment
There was a problem hiding this comment.
reviewed-for: public-api
pkozlowski-opensource
approved these changes
Feb 27, 2024
Member
pkozlowski-opensource
left a comment
There was a problem hiding this comment.
LGTM
Reviewed-for: public-api
Reviewed-for: fw-core
Angular has the `@Attribute` decorator that allows for attributes to be injected from the host node, but we don't have an equivalent for the `inject` function. These changes introduce the new `HostAttributeToken` class that can be used to inject attributes similarly to `@Attribute`. It can be used as follows:
```typescript
import {HostAttributeToken, inject} from '@angular/core';
class MyDir {
someAttr = inject(new HostAttributeToken('some-attr'));
}
```
The new API works similarly to `@Attribute` with one key exception: it will throw a DI error when the attribute doesn't exist, instead of returning `null` like `@Attribute`. We made this change to align its behavior closer to other injection tokens.
3487af0 to
60b7c08
Compare
Contributor
|
This PR was merged into the repository by commit 331b16e. |
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Angular has the
@Attributedecorator that allows for attributes to be injected from the host node, but we don't have an equivalent for theinjectfunction. These changes introduce the newHostAttributeTokenclass that can be used to inject attributes similarly to@Attribute. It can be used as follows:The new API works similarly to
@Attributewith one key exception: it will throw a DI error when the attribute doesn't exist, instead of returningnulllike@Attribute. We made this change to align its behavior closer to other injection tokens.