fixed NG0912 selector collision warnings #859
Merged
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.
A few of these were identical selectors which were easily fixed with renaming. Most of the warnings were produced by the
base-field
mixin that all of the new form components use. All of those fields are compiling themselves using that same base class, and since it does not define a selector, NG gives it a default of 'ng-component'. The selector defined in the parent component's options does not override the base's selector, since those are set at compile-time (hence the requirement that selectors be strings and not variables or functions).The solution turned out to be simple, replacing base-field's
@Component
decorator with@Injectable
, which allows the use of@UntilDestroy
within base-field and does not kick off NG's component compilation w/ its component collision testing. Now, the parent's component options aren't ignored, so its unique selector is used.