Angular 5数据从组件的一个子组件访问组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular 5数据从组件的一个子组件访问组件相关的知识,希望对你有一定的参考价值。

我有以下组件结构;

  • RecipeDetailComponent
  • RecipeListComponent RecipeItemComponent(此Component是RecipeList的子代)
  • RecipeComponent

并希望将数据RecipeItemComponent传递给RecipeDetailComponent。这样做的主要方法是在RecipeItemComponent创建@Output(),从RecipeListComponent获取数据并使用@Output()。最后使用属性绑定通过RecipeComponent使用@input()从RecipeDetailComponent获取数据。

有没有有效的方法或简单的方法来做到这一点?我们是否必须跨越父组件才能将数据从子级1获取到RecipeDetailComponent?

提前致谢

答案

我的解决方案是创建一个常见的Recipe服务,它已将passParam作为Subject类型的对象,并在父组件和子组件中注入此服务,当我去导航到子组件时,我将通知

/// service 


export class SharedService {
  passedParamter: Subject<any> = new Subject<any>();

  notify(data) {
    this.passedParamter.next(data);
  }
}


//// in parent Component

@Component({
    ...,
   providers:[SharedService]
})

export class RecipeListComponent implements OnInit {
   constructor(private SharedService: SharedService){}

   ngOnInit() {
   }

   navigateToChild() {
       this.SharedService.notify(data);
   }
}


//// in child Component

.
.
.
export class RecipeItemComponent implements OnInit {
    constructor(private SharedService: SharedService){}
    ngOnInit() {
        this.SharedService.passedParamter.subscribe(
           data => {
                /// here you will recive the data
            }
        )
    }
}

以上是关于Angular 5数据从组件的一个子组件访问组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular 5:从组件访问元素内部 html 以获取动态生成的元素

如何在 Angular 1.5 中从父控制器访问组件方法

如何从父组件 OnSubmit Angular 4 触发对子组件的验证?

从Angular 2中的子组件更新父组件属性

有条件地将子组件导入到父模板 angular 5

Angular 2:异步显示依赖于解析器的子组件