小编use*_*127的帖子

ngrx:如何将参数传递给createSelector方法中的选择器

我的商店中有一个非常简单的状态:

const state = {
 records: [1,2,3],
};
Run Code Online (Sandbox Code Playgroud)

我有一个记录选择器:

export const getRecords = createSelector(getState, (state: State) => state.records));
Run Code Online (Sandbox Code Playgroud)

我现在想要的是具有单独的选择器,用于按索引获取每个记录。为此,我想以这种方式创建一个带有道具的通用选择器:

export const getRecordByIndex = createSelector(
getRecords,
(state: State, { index }) => state.records[index]),
);
Run Code Online (Sandbox Code Playgroud)

然后,创建几个特定的​​选择器,例如:

export const getFirstRecord = createSelector(
getRecordByIndex(/* somehow pass index = 0 to this selector */),
(firstRecord) => firstRecord),
);
Run Code Online (Sandbox Code Playgroud)

但是我没有提到如何在createSelector方法中使用参数将参数传递给带有选择器的选择器。可能吗?

ngrx angular

12
推荐指数
5
解决办法
3778
查看次数

Angular 5:没有路由的组件的延迟加载

在我的Web应用程序中,我有一个"条款和条件"弹出窗口,通过页脚中的链接单击打开(因此它是核心组件).弹出窗口包含多个选项卡,每个选项卡都是一个非常大的模板文件.

我想知道是否可以将标签模板移动到单独的块并组织它们的延迟加载?我不确定我是否可以接受默认的Angular延迟加载,因为我不想为弹出窗口设置单独的路由.

lazy-loading angular angular5

10
推荐指数
1
解决办法
3505
查看次数

在模板中渲染 QueryList 的元素

我有两个组件: 项目列表项目

我这样使用它们:

<items-list items="items"></items-list>
Run Code Online (Sandbox Code Playgroud)

在内部级别的项目列表看起来像这样:

<ngx-carousel>
 <ngx-item *ngFor="let item of items">
   <item data="item"></item>
 </ngx-item>
</ngx-carousel>
Run Code Online (Sandbox Code Playgroud)

然而这种方法并不灵活,因为我应该使用一些“items”数组来填充项目。

我想做的是像这样重新设计方法:

<items-list>
 <item data="dataForFirstItem"></item>
 <item data="dataForSecondItem"></item>
</items-list>
Run Code Online (Sandbox Code Playgroud)

但这里的问题是我不明白如何重新设计items-list的实现:

<ngx-carousel>
 <ngx-item *ngFor="let item of items">
  <!-- each item should be rendered here -->
 </ngx-item>
</ngx-carousel>
Run Code Online (Sandbox Code Playgroud)

ngx-item 需要将组件放置在里面。

我使用ContentChildren捕获 QueryList 中所有渲染的项目组件。但是如何渲染 ngx-item 中的每个项目呢?

angular angular5

6
推荐指数
1
解决办法
2337
查看次数

grunt-contrib-clean任务不会删除具有网络src路径的文件

我在尝试清理远程文件服务器上的分发目录时遇到了麻烦.我有一个文件夹,并通过双斜线表示法访问它

//foldername/projectname/subfolder/
Run Code Online (Sandbox Code Playgroud)

我已经为grunt-contrib-clean任务配置了我的Gruntfile.js,如下所示:

clean: {
    files: [
        {
            src: ['//foldername/projectname/subfolder/']
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在我的任务列表中,我还有一个grunt-contrib-copy任务,它在grunt-contrib-clean之后启动以加载分配,并且此任务使用与网络上的文件夹相同的src路径.

因此,当我启动grunt时 - "干净"任务实际上不会清理子文件夹,但"复制"成功复制文件.当我尝试使用--verbose命令启动grunt时,我有一个下一个日志:

Running "clean" (clean) task
Verifying property clean exists in config...OK
Files: [no src]
Options: force=false, no-write=false
Options: force=false, no-write=false
Run Code Online (Sandbox Code Playgroud)

所以似乎任务找不到文件但原因未定义.授权访问服务器,我通过默认的Windows提示输入凭据.我有更改/删除文件夹的凭据.

任何人都可以帮助我并回答为什么干净的任务找不到我的目录.谢谢!

gruntjs

5
推荐指数
1
解决办法
2524
查看次数

通过在比较器中使用“小于/大于”比较运算符对字符串进行排序

今天我发现一个奇怪的字符串排序实现:

['Data', 'Chata', 'Clata'].sort(function(a, b) { return a > b});
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我们将有效的排序数组作为输出- ["Chata", "Clata", "Data"]。但是我不清楚它为什么起作用...

我知道比较器函数需要三个不同的输出-零,零以上的整数,零以下的整数。但是在这种情况下,我们只能采用两个值-true(如果大于b)或false(如果小于b)(类型强制后为1或0)。

谁能解释我为什么起作用?

javascript sorting string

5
推荐指数
1
解决办法
997
查看次数

标签 统计

angular ×3

angular5 ×2

gruntjs ×1

javascript ×1

lazy-loading ×1

ngrx ×1

sorting ×1

string ×1