标签: angular-cdk

带有mat-autocomplete的cdk-virtual-scroll工作不规则

我尝试在mat-autocomplete中使用cdk-virtual-scroll:

<mat-form-field>
  <input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl2"
     [matAutocomplete]="auto">
  <mat-autocomplete #auto="matAutocomplete">
    <cdk-virtual-scroll-viewport class="autocomplete-test-viewport" itemSize="50" minBufferPx="500" maxBufferPx="750">
      <mat-option *cdkVirtualFor="let option of options" [value]="option" class="autocomplete-item">
      {{option}}
      </mat-option>
    </cdk-virtual-scroll-viewport>
  </mat-autocomplete>
Run Code Online (Sandbox Code Playgroud)

但是,虚拟滚动在此设置中不规则地工作.我生成了200个选项,但是如果我使用滚动条向下箭头(chrome)慢慢滚动它会停止在14左右.使用mat-select的类似设置没有这个问题.

有关整个示例设置,请参阅https://stackblitz.com/edit/angular-xv1n2e?file=src/app/app.component.html(使用cdk-virtual-scroll进行mat-autocomplete和mat-select).

有没有人使用cdk-virtual-scroll进行mat-autocomplete工作?

angular-material angular-material2 angular angular-cdk

7
推荐指数
1
解决办法
1092
查看次数

如何使用angular的材质虚拟滚动以编程方式滚动到项目?

我有一个包含很多项目的列表,可以选择每个项目。为此,我使用了Angular Material Virtual Scroll。选择一个项目后,选中的项目将突出显示,然后保存在服务器上。当我刷新页面时,所选项目来自服务器,并再次突出显示。

我的代码看起来像

<cdk-virtual-scroll-viewport itemSize="40" class="wrapper">
  <div *cdkVirtualFor="let item of list"
       [class.selected]="item.id === selectedItem.id">
  </div>
</cdk-virtual-scroll-viewport>
Run Code Online (Sandbox Code Playgroud)

问题是,如果选择列表中下方的项目,则该项目将突出显示,但是我必须向下滚动至列表才能看到它。当该项目来自服务器时,我想以编程方式向下滚动至该项目。

我的文档中有一种scrollToIndex方法。在哪里可以找到的实例FixedSizeVirtualScrollStrategy,因此可以调用此方法?

angular-material angular virtualscroll angular-cdk angular-cdk-virtual-scroll

7
推荐指数
1
解决办法
3200
查看次数

如何使用键盘进行 Angular CDK 拖放操作

我们的应用程序有一个“表单生成器”,用户可以通过将表单字段拖到表单上来构建表单。我正在研究如何使这个键盘易于访问 - 这样用户就可以......

  • 通过按 Tab 键并按 Enter 键来抓取字段
  • 使用箭头键移动它
  • 再次按 Enter 键将其删除

我没有找到有关使用键盘访问 CDK 拖放操作的信息...

有人成功做到这一点吗?任何人都可以提供一些关于开始以这种方式访问​​它的好地方的指示吗?

keyboard drag-and-drop accessible angular angular-cdk

7
推荐指数
1
解决办法
1315
查看次数

Mat-select内的CDK虚拟滚动用于Mat-option

有人可以在mat-select内部使用虚拟滚动,如下所示吗?

<mat-form-field>
    <mat-select placeholder="State">
        <cdk-virtual-scroll-viewport autosize>
            <mat-option *cdkVirtualFor="let state of states" [value]="state">{{state}}</mat-option>
        </cdk-virtual-scroll-viewport>
    </mat-select>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

如您所见,https://stackblitz.com/edit/angular-h4xptu?file = app%2Fselect-reset-example.html不起作用-滚动时会产生奇怪的空格。

angular-material2 angular angular-cdk

6
推荐指数
2
解决办法
2307
查看次数

拖放(角度材质CDK)不起作用。先前和当前索引有误

我有一个主题列表,每个主题都有一个颜色列表。我用一个按钮打开一个Angular对话框显示所有主题,在对话框中列出该主题的所有颜色,并且可以将这些颜色重新排序@ angular / cdk / drag-drop

如果我只列出了2-4个主题。我能够毫无问题地重新排列每个主题的所有颜色。但是,如果我有20-30个主题的列表。只有第一个主题可以正常工作,我可以打开对话框并重新排列项目,但是,如果我选择了最后一个项目,则拖放无效。

我尝试调试错误,发现重新排序不起作用时,先前的索引和当前的索引具有相同的值。对于正确的索引,正确的索引是正确的。

我在StackBlitz上构建了一个简单的应用程序,可以在其中重现我遇到的问题。您可以尝试单击列表的第一项的“编辑”按钮,然后看到它可以正常工作,并且可以重新排列颜色,但是尝试重新排列列表中的最后一个主题,您将发现它不起作用。我在控制台中看不到任何错误。我在Chrome和Firefox上都尝试过,但都遇到了相同的问题。

每次拖放颜色时,您还可以在控制台中看到当前索引和上一个索引。

这是该应用程序的链接。

angular-material2 angular angular-cdk angular-material-7

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

formArray 中的可拖动表单组(反应式表单)

在 angular 拖放模块中,他们提供了 moveItemInArray() 函数的文档,通过使用它我们只能拖动数组中的内容。但是,我们如何在 formArray 中混洗 (formGroups/formControls) 呢?

甚至我也尝试过这个 moveItemInFormArray() 函数,正如这里提到的https://github.com/angular/angular/issues/27171。但我不能让它工作。

groupDrag.component.html

    <form [formGroup]="exampleForm">
      <div formArrayName="formUnits" cdkDropList (cdkDropListDropped)="drop($event)" *ngFor="let unit of exampleForm.controls.formUnits.controls; let i=index" class="rowGroup">
        <div [formGroupName]="i" class="basic-container" cdkDrag>
          <div class="row row-container" >
            <button type="button" class="drag-handle" mat-icon-button cdkDragHandle>
              <mat-icon>unfold_more</mat-icon>
            </button>

            <!-- label input field -->
            <mat-form-field  class="col-lg-4"> 
              <input matInput placeholder="Please enter label without spaces" formControlName="label" required>  
            </mat-form-field>

            <!-- options input field -->
              <mat-form-field  class="col-lg-3"> 
                <input matInput placeholder="Enter Placeholdertext" formControlName="placeholder">
             </mat-form-field>

          </div>
        </div>
      </div>
    </form>
Run Code Online (Sandbox Code Playgroud)

groupDrag.component.ts

drop(event: CdkDragDrop<FormGroup[]>) …
Run Code Online (Sandbox Code Playgroud)

drag-and-drop angular angular-cdk

6
推荐指数
2
解决办法
1871
查看次数

CDK 拖放仅显示文本数据,同时移动富卡 div 角度

我有一个在垂直方向呈现的卡片列表。我想在列表之间移动。所以,我正在使用Angular CDK拖放功能。

卡片有一些 CSS 规则,但是在移动卡片时它只显示文本数据作为预览移动,但我想在整个卡片移动时显示它。

这是它的移动方式

在此处输入图片说明

这是 HTML 代码

<div class="workstep-list" cdkDropList [cdkDropListDisabled]="!isEditWorkflow"
    (cdkDropListDropped)="workstepMoved($event)">
    <div class="list-item" *ngFor="let workstep of worksteps" cdkDrag cdkDragLockAxis="y">
        <div class="workstep-info" (click)="workstepDetail(workstep)">
            <i class="workstep-color"></i>
            <span class="workstep-name">{{workstep.name}}</span>
        </div>
        <!-- Transition list -->
        <div class="workstep-transition" *ngFor="let transition of workstep.transitions">
            <i class="fa fa-arrow-right"></i>
            <i class="transition-color"></i>
            <span class="transition-name">{{transition.name}}</span>
        </div>

        <!-- Add new Transition -->
        <div class="transition-add" *ngIf="isEditWorkflow">
            <i class="material-icons">add</i>
            <span>Add Transition</span>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是CSS

.workstep-list {
    background-image: radial-gradient(#e1e1e1 1px, #fff 1px);
    background-position: 0 0;
    background-size: 9px 9px;
    padding: …
Run Code Online (Sandbox Code Playgroud)

css drag-and-drop angular angular-cdk

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

如何将 AWS CDK 合成器输出到终端/网络浏览器 [如果可能]

仅供参考,只是想让你们知道我正在编写这个 AWS CDK 应用程序:

  • 打字稿
  • 我正在使用 Macbook 编写应用程序,运行 macOS Mojave 10.14.6。
  • 我的节点版本是 10.16.3
  • NPM 版本是 6.9.0
  • 我的 AWS CDK 版本是 1.10.0(内部版本 19ae072)。我通过cdk --version在我的 bash 终端上运行获得了这个细节

问题定义

大家好,我对 AWS CDK 非常陌生,目前我仍在使用它。到目前为止,我觉得与键入 cloudformation 模板相比,它确实提供了更多的灵活性。

但是,我无法弄清楚的一件事是如何像System.println() 在 JavaJavaScript 中一样输出变量的值 console.log

到目前为止我尝试过的

现在,我对 TypeScript 很陌生,但到目前为止,我已经尝试在其中一个 TypeScript 文件中使用 console.log() 命令,但它不允许我使用它:

每次我尝试这样做时:

console.log(name); //name is a string

我在视觉工作室得到这个:

在此处输入图片说明

老实说,我对 TypeScript 也很陌生,这也无济于事,因此我在学习 AWS CDK 时遇到了困难(但到目前为止,我仍然喜欢它)

我已经在 cdk 应用程序项目文件夹中安装了控制台节点模块./node_modules

在此处输入图片说明

~任何帮助将不胜感激~

非常感谢!:)

debugging terminal amazon-web-services typescript angular-cdk

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

使用 cdkDropList 时元素样式不适用(Angluar cdk 拖放)

我发布这个问题只是为了自己回答,以防有人像我一样挣扎!

我正在开发一个 angular 项目来实现一个类似 Trello 的应用程序。我希望能够将一个元素从一个列表拖到另一个列表中,所以我安装了 Angular cdk 模块并遵循了他们的指南

在此处输入图片说明

注意:我的应用程序被分成几个页面/组件,我正在实现该接口 (Trello) 的页面被称为BoardPageComponent

首先,我添加了cdkDrag指令,元素变得可拖动,这是一个好的开始!

然后我将cdkDropList指令添加到父元素,子元素仍然可以拖动,但它们的样式在拖动时不再起作用!

解决方案

当在 a 内部拖动元素时cdkDropListDragAndDropModule会创建该元素的副本,但位于文档的正文级别。因此,如果您的组件被封装,那么它的样式将不适用!

解决方案 1:一种快速解决方案是移动该可拖动元素的样式并将其放入全局样式文件中。

解决方案 2:另一种解决方案是禁用该组件的封装ViewEncaplusation.None

@Component({
  selector: 'app-board-page',
  templateUrl: './board-page.component.html',
  styleUrls: ['./board-page.component.scss'],
  encapsulation: ViewEncapsulation.None
})
export class BoardPageComponent implements OnInit, OnDestroy {
  ....
}
Run Code Online (Sandbox Code Playgroud)

这会起作用,但您应该意识到这可能会将某些样式泄露给应用程序的其他组件。所以一定要手动封装组件的样式。

或者也许有另一种方式?

javascript css angular angular-cdk angular-cdk-drag-drop

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

未捕获的类型错误:没有“new”就不能调用类构造函数平台

我安装了 Angular CDK 以便使用 PrimeNG 的下拉组件,但它会引发错误。

我在 app.module.ts 中添加了这个:

import {DropdownModule} from 'primeng/dropdown';
Run Code Online (Sandbox Code Playgroud)

只需输入以下内容即可安装 Angular CDK:

npm install @angular/cdk --save
Run Code Online (Sandbox Code Playgroud)

angular angular-cdk

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