【问题标题】:Output simple static value Angular输出简单的静态值 Angular
【发布时间】:2022-12-01 17:26:02
【问题描述】:

我已经花了很长时间研究角度的输出,但在任何地方我都只能找到一种发出事件的方法。在我的例子中,我有一个内部有路由器的父母,我希望根据孩子的值更改标题。因此,当我加载路线 1 时,我想通过 ngOnInit 发出一个字符串,但这不起作用。我觉得我想要完成此任务的方式不是应该的方式。有什么建议吗?数据是静态的,不会在孩子身上改变。我应该在父级中执行 ngIf 并检查路由吗?

<div> here i want the title 
  <router-outlet> <router-outlet>
<div>

【问题讨论】:

    标签: angular output


    【解决方案1】:

    两个选项:

    1. 可以在父组件监听路由变化,改变 标题根据它。
    2. 您可以将标题作为behaviorSubject存储在某些服务的变量中,并从子组件更改它的值,并在父组件中收听它。

    【讨论】:

      【解决方案2】:

      您可以使用服务在组件之间共享数据。

      在服务中创建一个Subject,在主组件中订阅。使用 Subject 它比 BehaviorSubject 更好,因为它不会发出初始值。

      使用此可观察对象从每个子组件发出新标题。

      应用程序服务.ts

       ...
       titleChanged$ = new Subject<string>();
      
       constructor() {}
      
       getTitleChanged$() {
         return this.titleChanged$.asObservable();
       }
      
       setTitle(title: string) {
         this.titleChanged$.next(title);
       }
       ...
      

      应用程序组件.ts

        ...
        this.appService
            .getTitleChanged$()
            .pipe(delay(0))
            .subscribe((title) => {
              this.title = title;
            });
        ...
      

      我在stackblitz上创建了一个演示

      【讨论】:

      • 谢谢你的回答。我无法访问 Stackblitz,但我会尝试这种方法!
      • 我已经修复了链接。有用。
      猜你喜欢
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2019-03-19
      • 2013-11-07
      • 1970-01-01
      相关资源
      最近更新 更多