我正在使用 Angular 5 并尝试创建某种动态组件。
我有一个简单的指令MyColumnDef(使用选择器[myColumnDef])。没有什么特别的。我将它用于:
父组件.html:
<div>
<my-table>
<ng-template myColumnDef>
Lorem ipsum.
</ng-template>
</my-table>
</div>
Run Code Online (Sandbox Code Playgroud)
my-table.component.html:
<div>
Something:
<ng-container *ngTemplateOutlet="temp"></ng-container>
</div>
Run Code Online (Sandbox Code Playgroud)
在my-table.component.ts中:
@ContentChild(MyColumnDef, {read: TemplateRef}) temp;
Run Code Online (Sandbox Code Playgroud)
这应该显示'Lorem ipsum.'文本,但什么也没有,实际上是temp(undefined根据),我不知道为什么。我错过了什么吗?console.logngAfterViewInit
我打算使用Angular 5创建一个大型应用程序。我也想使用Ngrx来存储我的应用程序的状态。但是有一件事我不明白。
假设我有一个对象(为了简单起见,我现在不使用类或接口),该对象以表示我的状态Store:
let state = {
x: 10,
y: [1, 2, 3]
};
Run Code Online (Sandbox Code Playgroud)
在我阅读的每篇文章中,作者都使用它在化简器Object.assign()中创建状态的副本。例如:
...
case SET_X:
return Object.assign({}, state, {x: 123});
...
Run Code Online (Sandbox Code Playgroud)
但这不会创建状态的深层副本。因此,y新状态的数组与旧状态的数组相同。我认为这与Redux / Ngrx的概念背道而驰。
那么这是否意味着我必须使用ListImmutable.js或类似的东西,而每篇文章都是“错误的”?还是我错过了什么?我认为这不是一个非常特殊的情况。
我有一个来自 PrimeNg 的多选项目。如果需要,我可以选择它们,但是默认情况下是否可以将它们全部选中?
<p-multiSelect [options]="userconfig" [(ngModel)]="selectedScopes" optionLabel="name"
maxSelectedLabels=3 (onChange)="getCheckboxScope($event)"
selectedItemsLabel="{0} users selected" defaultLabel="select users...">
</p-multiSelect>
Run Code Online (Sandbox Code Playgroud) 我有一个孩子和一个父组件.
我想从子组件传递一个数组并将其显示在父组件中.
我首先开始:
@Input data: string[];
Run Code Online (Sandbox Code Playgroud)
然后ngOnInit我有:
ngOnInit() {
this.data = ['name1', 'name2', 'name3'];
}
Run Code Online (Sandbox Code Playgroud)
然后我有父组件:
<app.parent></app.parent>
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何在父组件中显示此数据?
我有以下格式的数组(每个子数组都有父键作为前缀):
$input = array(
'seo_text' => array(
'seo_text_title' => '',
'seo_text_description' => '',
'seo_text_button' => array(
'seo_text_button_text' => '',
'seo_text_button_url' => '',
'seo_text_button_new_tab_enabled' => '',
),
),
);
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下格式:
$input = array(
'seo_text' => array(
'title' => '',
'description' => '',
'button' => array(
'text' => '',
'url' => '',
'new_tab_enabled' => '',
),
),
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个递归函数,但是它没有按照预期的方式工作。
我在用
value.replace(/\b\w/g, first => first.toLocaleUpperCase())
Run Code Online (Sandbox Code Playgroud)
将单词的第一个字母转换为大写,它工作正常.它是在Angular上使用ngModel输入类型的管道完成的.
我的问题是每当我将光标保持在所提到的文本字段的单词的第一个字母之前并键入内容时,当我键入第二个字母时会自动转到单词/句子的末尾,从而中断输入.
我该如何解决?
我有simle特效类,必须从Firebase获取一些数据并发送新动作.
@Injectable()
export class TripsEffects {
constructor(private actions$: Actions, private afAuth: AngularFireAuth ) {}
@Effect()
loadTrips$ = this.actions$.ofType(TripsActionsTypes.LOAD_TRIPS)
.pipe(
switchMap(() => {
return this.afAuth.authState.pipe(
map(user => new LoadTripsSuccess(user))
);
})
);
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误Actions must have a type property.当用户登录时,它们被重定向到Trips页面,而在Trips组件中,我将调度一个动作来加载行程.这是我的行动:
export enum TripsActionsTypes {
LOAD_TRIPS = '[Trips] Load Trips',
LoadTripsSuccess = '[Trips] Load Trips Success',
LoadTripsFailure = '[Trips] Load Trips Failure'
}
export class LoadTrips implements Action {
type: TripsActionsTypes.LOAD_TRIPS;
}
export class LoadTripsSuccess implements Action {
type: TripsActionsTypes.LoadTripsSuccess;
constructor(public …Run Code Online (Sandbox Code Playgroud) angular ×6
typescript ×3
javascript ×2
ngrx ×2
angular5 ×1
arrays ×1
ngrx-effects ×1
ngrx-store ×1
php ×1
primeng ×1
recursion ×1
regex ×1