通过属性将数组传递到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 解决了问题!
【问题讨论】:
包含如果您删除模板中的 ,您应该可以继续使用单向绑定 (
【讨论】:
当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants” 您也可以发布您的控制器吗? 您确定 head 是您模板中控制器的名称吗? 是的。模板中的其他任何地方我都使用“head”作为控制器,它工作正常。 等等.. 奇怪...我唯一能想到的另一件事是您的 allowedPlantsResolve 不是数组...【参考方案2】:将植物的绑定从
【讨论】:
当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants” 其实,去掉引号,留下花括号 @Ladmerc 带大括号,没有引号,仍然是同样的问题。传递字符串“head.permittedPlants”以上是关于通过属性将数组传递到Angular 1.5中的组件的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2:如何检测数组中的变化? (@input 属性)
如何将从服务接收到的 json 数据传递到 Angular 4 的角材料组件中的数组
如何使用 Angular 中的依赖注入将属性指令实例传递给嵌套组件