子组件的唯一提供者值
Unique provider value for child component
我正在尝试创建一个可重复使用的日期选择器组件。其中一项功能是您可以选择 periodLevel
。例如每月每天或每年。我遇到的问题是,当我从父组件调用此组件时,我使用我在 providers
中放入 useValue
的 dateFormats
变量来操纵周期级别。
在 stackblitz 中,我重现了这种情况,我两次调用 child1 组件,一次是每日级别,一次是每月级别:
两个日期选择器都显示为每月级别 (mm/yyyy),因为 dateFormats
变量针对第二个子组件以这种方式进行了调整。
在 child1 组件内。我在组件的 providers
中使用 dateFormats
变量来操作日期格式。
问题是我不知道如何在 useValue
中使用局部变量来避免对所有子组件重复使用相同的 dateFormats
。
stackblitz 示例的预期结果是第一个子组件显示每日级别 (dd/mm/yyyy),第二个子组件显示每月级别 (mm/yyyy)。
https://stackblitz.com/edit/angular-ivy-qpa9x6?file=src/app/app.component.html
通过进行两项调整设法解决了我的问题。
使用useFactory
生成dateFormats
变量的唯一实例(在DataService
中抽象出来)
将 MAT_DATE_FORMATS
注入到组件构造函数中的局部变量中,以便能够修改它 --> this.thisDateFormat
.
我可以向遇到类似问题的任何人推荐有关提供者的 Angular 大学课程:https://angular-university.io/lesson/angular-di-providers-injection-tokens
我正在尝试创建一个可重复使用的日期选择器组件。其中一项功能是您可以选择 periodLevel
。例如每月每天或每年。我遇到的问题是,当我从父组件调用此组件时,我使用我在 providers
中放入 useValue
的 dateFormats
变量来操纵周期级别。
在 stackblitz 中,我重现了这种情况,我两次调用 child1 组件,一次是每日级别,一次是每月级别:
两个日期选择器都显示为每月级别 (mm/yyyy),因为 dateFormats
变量针对第二个子组件以这种方式进行了调整。
在 child1 组件内。我在组件的 providers
中使用 dateFormats
变量来操作日期格式。
问题是我不知道如何在 useValue
中使用局部变量来避免对所有子组件重复使用相同的 dateFormats
。
stackblitz 示例的预期结果是第一个子组件显示每日级别 (dd/mm/yyyy),第二个子组件显示每月级别 (mm/yyyy)。
https://stackblitz.com/edit/angular-ivy-qpa9x6?file=src/app/app.component.html
通过进行两项调整设法解决了我的问题。
使用
useFactory
生成dateFormats
变量的唯一实例(在DataService
中抽象出来)将
MAT_DATE_FORMATS
注入到组件构造函数中的局部变量中,以便能够修改它 -->this.thisDateFormat
.
我可以向遇到类似问题的任何人推荐有关提供者的 Angular 大学课程:https://angular-university.io/lesson/angular-di-providers-injection-tokens