Angular cdk 拖放:拖放到其他容器后保持元素样式
Angular cdk drag an drop: keep element style after drop into other container
我有一个包含多行的时间线,我想在时间线的各行之间移动项目。为此,我使用 angular-cdk 拖放,每一行都是一个 cdkDropList。
在不同列表之间移动线条时,我想保留掉落项目的原始样式,但在将项目放入另一个列表后,该项目采用另一个列表中项目的样式。如果我在同一个列表中移动项目,我可以更改项目的样式。
我设置了一个 stackblitz:https://stackblitz.com/edit/angular-opuyuk
您可以看到,如果您在列表之间移动项目,列表项目的样式会发生变化,但是当在其自己的列表内移动项目时,样式会发生变化。
您需要在 TypeScript 中保留 styles/cssClass:
[示例][1]:
[1]: https://stackblitz.com/edit/angular-9vnaqy?
只是为了您的情况,您需要创建一个通用接口或 class
class theItems{
name:String;
styleClass:String;
}
或者你想用动态处理它 class 取决于你想如何解决 HTML 方面。
dones:theItems[]=[
{
name: 'Get to work',
styleClass:"grid-column: 2/5; background-color: red;",
},
{
name: 'Brush teeth',
styleClass:"grid-column: 2/5; background-color: red;",
},
{
name: 'Take a shower',
styleClass:"grid-column: 2/5; background-color: red;",
},
];
todos:theItems[]=[
{
name: 'Get to work',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Pick up groceries',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Go home',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Fall asleep',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
];
预先填充数组中的对象列表,并将 cdkDropListData
与所需的数组连接起来。
现在确保如果你想在打字稿中使用 css 你必须为 DOM
清理它
safeCss(style) {
return this.doms.bypassSecurityTrustStyle(style);
}
或者您也可以只使用 css/SCSS class 名称。
最终在 Html 元素中使用经过消毒的 css:
[style]="safeCss(item.styleClass)"
请随时发表您的想法,如果被采纳为答案,我们将不胜感激。
我有一个包含多行的时间线,我想在时间线的各行之间移动项目。为此,我使用 angular-cdk 拖放,每一行都是一个 cdkDropList。 在不同列表之间移动线条时,我想保留掉落项目的原始样式,但在将项目放入另一个列表后,该项目采用另一个列表中项目的样式。如果我在同一个列表中移动项目,我可以更改项目的样式。
我设置了一个 stackblitz:https://stackblitz.com/edit/angular-opuyuk
您可以看到,如果您在列表之间移动项目,列表项目的样式会发生变化,但是当在其自己的列表内移动项目时,样式会发生变化。
您需要在 TypeScript 中保留 styles/cssClass: [示例][1]: [1]: https://stackblitz.com/edit/angular-9vnaqy?
只是为了您的情况,您需要创建一个通用接口或 class
class theItems{
name:String;
styleClass:String;
}
或者你想用动态处理它 class 取决于你想如何解决 HTML 方面。
dones:theItems[]=[
{
name: 'Get to work',
styleClass:"grid-column: 2/5; background-color: red;",
},
{
name: 'Brush teeth',
styleClass:"grid-column: 2/5; background-color: red;",
},
{
name: 'Take a shower',
styleClass:"grid-column: 2/5; background-color: red;",
},
];
todos:theItems[]=[
{
name: 'Get to work',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Pick up groceries',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Go home',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
{
name: 'Fall asleep',
styleClass:"grid-column: 1/11; margin: 0 10px; background-color: #00B7A8;",
},
];
预先填充数组中的对象列表,并将 cdkDropListData
与所需的数组连接起来。
现在确保如果你想在打字稿中使用 css 你必须为 DOM
清理它 safeCss(style) {
return this.doms.bypassSecurityTrustStyle(style);
}
或者您也可以只使用 css/SCSS class 名称。
最终在 Html 元素中使用经过消毒的 css:
[style]="safeCss(item.styleClass)"
请随时发表您的想法,如果被采纳为答案,我们将不胜感激。