【问题标题】:Angular dual-listbox make specific entry readonlyAngular双列表框使特定条目只读
【发布时间】:2021-02-20 01:46:18
【问题描述】:

我正在使用“angular-dual-listbox”,我想将 RHS 中的一个特定条目设为只读,以便用户无法删除所有组。如果有人知道,请帮忙

【问题讨论】:

    标签: angular angular8 angular9 bootstrap-duallistbox


    【解决方案1】:

    查看了source code.,它只是不受支持。

    然而,文档确实描述了扩展组件的能力。这可以让您只添加一个小验证。

    按照该建议,您可以快速创建如下内容。

    import { Component } from '@angular/core';
    import { DualListComponent } from 'angular-dual-listbox';
     
    @Component({
        selector: 'custom-dual-list',
        templateUrl: './custom-dual-list.component.html',
        styleUrls: [ './custom-dual-list.component.scss' ]
    })
    export class CustomDualListComponent extends DualListComponent {
    
      moveItem(source: BasicList, target: BasicList, item: any = null, trueup = true) {
    
        if (this.canMoveItem(item)) super.moveItem(source, target, item, trueup);
    
      }
    
      canMoveItem(item: any): boolean {
        // add some logic here.
        return true; // or false
      }
    }
    

    但是,他们的文档假定您添加了自己的模板和 css 文件。你可以try to reference theirs 但这通常不是那么容易。一般来说,扩展组件在角度上从来都不是一件容易的事。组合比继承容易,但它不会给你足够的控制权。

    老实说,由于这只是一个小组件,您最好只复制整个源代码。 (只有 3 个小文件)你肯定会在不到一个小时的时间内完成。

    当然,您将丢失该组件的未来更新。因此,政治正确的做法可能是分叉他们的存储库,进行更改,然后发送拉取请求。最后在他们批准后,等待他们的下一个版本,然后安装更新的包。

    因为这需要大量的时间和精力,所以最好只复制整个内容。

    【讨论】:

    • 写完所有这些,如果您以前从未分叉过 github 项目,并且您有时间这样做,那么这可能是一个很好的机会。这可能是一个改变生活的事件。 :-)
    猜你喜欢
    • 2015-03-16
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2013-09-02
    • 2021-02-09
    • 1970-01-01
    • 2021-12-17
    • 2015-10-08
    相关资源
    最近更新 更多