最终目标是使用动态创建的嵌套ngFor.我尝试创建一系列下拉菜单,每个菜单都取决于前一个菜单.下拉菜单的确切数量是未知的并且是动态创建的.例:
<form [ngFormModel]="dropDownForm" (ngSubmit)="onSubmit()">
<div *ngFor="#nr of numberOfDropdowns">
<label>{{nr.name}}</label>
<select [ngFormControl]="dropDownForm.controls[i]">
<option *ngFor="#item of Dropdown[nr.id] | async" value="{{item.value}}">{{item.name}}</option>
</select>
</div>
<button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在Dropdown [nr.id]中,整个事情都失败了,这似乎不适用于异步管道.我玩了一下:
{{myAsyncObject | async}} //works
{{myAsyncObject['prop1'] | async}} //fails silently
{{myAsyncObject['prop1']['prop2'] | async}} // EXCEPTION: TypeError: Cannot read property 'prop2' of undefined in [null]
Run Code Online (Sandbox Code Playgroud)
关于如何使这个工作的任何想法?
我在Angular 2 app(beta 1)中有一个ComponentB.它完全正常,直到我将它放在ComponentA中的ngFor循环中.我收到了相当神秘的错误:
EXCEPTION:TypeError:viewFactory_ComponentB0不是[ComponentA @ 1:23中的数字]中的函数BrowserDomAdapter.logError @ angular2.dev.js:22690BrowserDomAdapter.logGroup @ angular2.dev.js:22701ExceptionHandler.call @ angular2.dev.js:1163 (匿名函数)@ angular2.dev.js:12416NgZone._notifyOnError @ angular2.dev.js:13324collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:13228run @ angular2-polyfills.js:141(匿名函数)@ angular2 .dev.js:13247NgZone.run @ angular2.dev.js:13209(匿名函数)@ angular2.dev.js:12499schedulerFn @ angular2.dev.js:12742tryCatcher @ Rx.js:31Subscriber.next @ Rx.js:9500Subject ._next @ Rx.js:9999Subject.next @ Rx.js:9963EventEmitter.emit @ angular2.dev.js:12723(匿名函数)@ angular2.dev.js:13140run @ angular2-polyfills.js:138NgZone._notifyOnTurnDone @ angular2 .dev.js:13139(匿名函数)@ angular2.dev.js:13254zoneBoundFn @ angular2-polyfills.js:111lib $ es6 $ promise $ asap $$ flush @ angular2-polyfills.js:1305 angular2.dev.js:22690 ORIGINAL EXCEPTION:TypeError:viewFactory_ComponentB0不是functionBrowserDomAdapter.logError @ angular2.dev.js:22690ExceptionHandler.call @ angular2.dev.js:1172(匿名函数)@ angular2.dev.js:12416NgZone._notifyOnError @ angular2. dev.js:13324collection_1.StringMapWrapper.merge.onError @ angular2.dev.js:13228run @ angular2-polyfills.js:141(匿名函数)@ angular2.dev.js:13247NgZone.run @ angular2.dev.js:13209(匿名函数)@ angular2.dev.js:12499schedulerFn @ angular2.dev.js:12742tryCatcher @ …
我可以在rsync数组中定义我的排除/选项,并在后续命令中使用这些数组,例如
rsync "${rsyncOptions[@]}" "${rsyncExclusions[@]}" src dest
我想使用该find命令实现相同的目标,但我找不到让它工作的方法:
findExclusions=(
"-not \( -name '#recycle' -prune \)"
"-not \( -name '#snapshot' -prune \)"
"-not \( -name '@eaDir' -prune \)"
"-not \( -name '.TemporaryItems' -prune \)"
)
LC_ALL=C /bin/find src -mindepth 1 "${findExclusions[@]}" -print
Run Code Online (Sandbox Code Playgroud)
无论我尝试以何种组合来定义数组(单引号与双引号,转义括号),我总是会遇到错误:
find: unknown predicate `-not \( -name '#recycle' -prune \)'
# or
find: paths must precede expression: ! \( -name '#recycle' -prune \)
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?