如何将特定绑定传递给Angular 1.5中组件路由器引入的ng-outlet组件?

tcm*_*ore 8 router components angularjs

我希望能够将参数传递给ng-outlet引入的子组件.但我不知道该怎么做.

这是我的组件绑定的一个例子:

app.component('profile', {
  bindings: {
    section: '=',
    currentUser: '<'
  },
...
Run Code Online (Sandbox Code Playgroud)

通常我会像这样调用它:

<profile section="$ctrl.bio" current-user="$ctrl.selectedUser"></profile>
Run Code Online (Sandbox Code Playgroud)

但相反,我有这个:

<ng-outlet></ng-outlet>
Run Code Online (Sandbox Code Playgroud)

和一个传递配置文件的路由器.

 $routeConfig: [
        { path: '/Profile/:id', name: 'Profile', component: 'profile' }]
Run Code Online (Sandbox Code Playgroud)

那么如何将火焰传递给这个组件的其他基本绑定,也许是无法编码到URL中的绑定?

谢谢,非常感谢帮助

编辑:我被要求提供一个更具体的例子,说明我想做什么.

我认为概念问题相当清楚,但这是一个特殊情况,其中传递路线参数显然是不够的.在我的App组件级别说我有一个事件回调函数onDeleteItem(id)

我该如何复制

bindings: {
    onDeleteItem: "&"
}

...

<some-component on-delete-item="$ctrl.onDeleteItem(id)"></some-component>
Run Code Online (Sandbox Code Playgroud)

有一个出口?

CSh*_*ark 6

我查看了文档并查看了路由器中使用的其中一个组件

bindings: { $router: '<' }

所以我很好想,如果可以填充绑定,那么为什么我们不能为其他绑定传递数据,但是我查看了组件路由器的来源,实际上我没有看到传递数据的方法办法.这是因为在这里它看起来像是专门处理$ router中的传递,但我不认为模板在此之后被修改:

activate(instruction) {
    ...
    this.controller.$$template = '<' + dashCase(componentName) + ' $router="::$$router"></' + dashCase(componentName) + '>';
    ...
};
Run Code Online (Sandbox Code Playgroud)


我会说,你应该能够使用数据传递到组件

$routeConfig: [
    { path: '/Profile/:id', name: 'Profile', component: 'profile', data: { item1: 'item1'} }]
Run Code Online (Sandbox Code Playgroud)

然后在组件的构造函数中注入RouteData,但我认为这只是在角度2中,因为我没有在angular 1路由器中看到它的实现.


所以基于我所做的研究,我认为你不能,或者很难.另外,相关:如何将数据注入从路由器创建的Angular2组件https://github.com/angular/angular/issues/4452


Chr*_*dal 5

即使通过ngOutlet,您也可以使用https://docs.angularjs.org/guide/component中指定的require参数来要求父组件.这样,您就可以与子组件中的父组件进行通信(即使父组件通过ngOutlet调用子组件).这使得来自child => parent的通信成为可能.关于parent => child,你仍然可以使用相同的技术,即使它感觉有点尴尬(你打电话给孩子的父母得到你需要的东西......).也许更标准的东西已经存在,或者很快就会实施.