通过属性将数组传递到Angular 1.5中的组件

Posted

技术标签:

【中文标题】通过属性将数组传递到Angular 1.5中的组件【英文标题】:Passing an array into a component in Angular 1.5 through an attribute 【发布时间】:2017-04-15 03:51:46 【问题描述】:

我正在尝试将数组从父控制器传递到子组件。

<plant-select plants="head.permittedPlants"></plant-select>

head.permittedPlants 是一个数组

我收到以下错误:

“错误:[$parse:syntax] 语法错误:从 [head.permittedPlants] 开始的表达式 [head.permittedPlants] 的第 2 列中的标记 '' 无效键。”

我只能传入一个字符串吗?

我的组件如下所示:

let plantSelectComponent = 
  bindings:
  plants:'<'
,
  template:require('./plantSelect.template.html'),
  controller:plantSelectController

下面父级的控制器。 “permittedPlantsResolve”是来自 UI-Router 的解析:

function headerCtrl($scope, $ngRedux, $mdSidenav, $log, permittedPlantsResolve)

  let ctrl = this;


 ctrl.permittedPlants = permittedPlantsResolve;


 ctrl.consoleState = function()
    console.log($ngRedux.getState());
  

  ctrl.menuToggle = function()
    $mdSidenav('left').toggle()
  



export default headerCtrl;

如果我将绑定更改为“@”,它通过字符串没有问题。数组有可能吗?我必须传递一个字符串吗?

已解决:在组件的控制器中,我在 postLink 上分配了 $attrs.plants,分配给它 onInit 解决了问题!

【问题讨论】:

包含 的模板文件不是组件,只是附加了控制器的 html。它也需要是一个组件吗? 【参考方案1】:

如果您删除模板中的 ,您应该可以继续使用单向绑定 (

【讨论】:

当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants” 您也可以发布您的控制器吗? 您确定 head 是您模板中控制器的名称吗? 是的。模板中的其他任何地方我都使用“head”作为控制器,它工作正常。 等等.. 奇怪...我唯一能想到的另一件事是您的 allowedPlantsResolve 不是数组...【参考方案2】:

将植物的绑定从

【讨论】:

当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants” 其实,去掉引号,留下花括号 @Ladmerc 带大括号,没有引号,仍然是同样的问题。传递字符串“head.permittedPlants”

以上是关于通过属性将数组传递到Angular 1.5中的组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2:如何检测数组中的变化? (@input 属性)

如何将从服务接收到的 json 数据传递到 Angular 4 的角材料组件中的数组

如何使用 Angular 中的依赖注入将属性指令实例传递给嵌套组件

是否可以将服务注入 Angular 1.5 组件的 templateUrl 属性?

angularJS 1.5 嵌套组件

属性中的 Angular 1.5 组件表达式“未定义”