Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在UI路由器中从子级回调或侦听父级,Angular 5?_Angular_Angular Ui Router - Fatal编程技术网

在UI路由器中从子级回调或侦听父级,Angular 5?

在UI路由器中从子级回调或侦听父级,Angular 5?,angular,angular-ui-router,Angular,Angular Ui Router,作为我正在寻找的模式类型的一个简单示例,我有一个列表组件,它有一个“list item Selected”事件。我不想在该组件内部提供此事件的实际操作。相反,我希望拥有它的组件提供它。据我所知,这是一个相当标准的组件模式,因为它强制职责分离并鼓励重用(因为您可以在另一个上下文中使用相同的列表组件,其中选择会导致不同的操作) 在用于AngularJS的UI Router中,这可以通过使用模板轻松实现,而不仅仅是引用组件并在其中传递回调函数,如下所示: .state('nav

作为我正在寻找的模式类型的一个简单示例,我有一个列表组件,它有一个“list item Selected”事件。我不想在该组件内部提供此事件的实际操作。相反,我希望拥有它的组件提供它。据我所知,这是一个相当标准的组件模式,因为它强制职责分离并鼓励重用(因为您可以在另一个上下文中使用相同的列表组件,其中选择会导致不同的操作)

在用于AngularJS的UI Router中,这可以通过使用模板轻松实现,而不仅仅是引用组件并在其中传递回调函数,如下所示:

            .state('nav.clientHeader.clientList',{
            template: '<client-list clients="$ctrl.clients" ' +
            'onClick="$ctrl.loadClient"></client-list>',
            url: '/list'
        })
.state('nav.clientHeader.clientList'{
模板:“”,
url:“/list”
})
我的问题是,在UI Rotuer 2中,对于Angular 2+,这是如何实现的?在Angular 2+中执行回调的新标准方法是使用@Output装饰在父级和子级之间设置发射/侦听模式。但UI路由器2似乎无法建立@Output绑定这是对那个问题的正确解读,还是在谈论其他问题


我在主Angular Router中看到了类似问题的答案,建议使用服务在两个组件之间进行通信,但对于像onClick这样简单的东西来说,这似乎是一种疯狂的方法,特别是考虑到Angular实际上通过@Output具有正确的模式。

Angular 2+中没有UI路由器,如果您关注我链接的问题,请阅读本文,您将看到这是Angular 2+的github for UI路由器。主网页在这里。Angular团队使用了他们自己的内部解决方案,但UI路由器团队继续努力,推出了2+解决方案。看起来官方路由器和UI路由器都有这个问题,但我只关心UI路由器。Gular 2+有一个自己的路由器模块,我强烈建议您使用,因为它是Angular团队提供的标准,您可以在web上找到更多关于它的信息。我显然知道这一点。我正在升级一个已经使用UI路由器的项目,因此UI路由器是合理的选择。官方路由器有它自己的问题,一般来说UI路由器的功能更强。无论哪种方式,看起来官方路由器在绑定到@Output时也存在同样的问题。