【问题标题】:Angular ng-pick-datetime - Disable the input based on a conditionAngular ng-pick-datetime - 根据条件禁用输入
【发布时间】:2019-10-30 15:56:28
【问题描述】:

我正在开发 Angular 8,并且正在使用 ng-pick-datetime 插件。我希望禁用日期时间选择器以及根据条件动态触发它的输入元素。我试图搜索但找不到任何解决方案。以下是我的代码:-

<input type="text" 
 style="cursor: pointer; border: none; height: 25px; text-align: center; font-size: small; box- 
 shadow: 0 0 0 0 white !important;"
 placeholder="DD MMM YYYY" class="datepicker" 
 id="date" [disabled]="!editable" #date 
 [owlDateTimeTrigger]="date" [owlDateTime]="date" 
 [min]="min" [max]="max"> 

<img alt="" 
  src="./assets/images/datepicker.svg" 
  style="position: relative; top: 6px; margin-right: 5px;" height="20px" width="20px;">


<owl-date-time [disabled]="!editable" [pickerType]="'calendar'" 
  #date></owl-date-time>

在上面尝试时,一个名为 owl-dt-trigger-disabled 的类会附加到我的输入元素。输入元素似乎被禁用了,但我们仍然可以手动编辑输入元素。

在这里,当我的 'editable' 变量为 false 时,我想禁用 datepicker 输入。如果有人有答案,请帮助我。

我发现了一个问题,但没有找到任何答案- Can't dynamically disabled ng-pick-datetime component

更新

请找到上述相同问题的 stackblitz 链接。我已经将 editable 设置为 false - Angular ng-pick-datetime - Disable the input based on a condition

【问题讨论】:

  • 我们可以获取相同的完整代码或 stackblitz 链接吗?

标签: angular datetimepicker


【解决方案1】:

要在 Angular (ng-version="6.1.10") 中禁用 ng-pick-datetime,请在输入字段中添加 'readonly' 和 'disabled' 属性,同时在 owl-date-time 中添加 'disabled' 属性。

<input [owlDateTimeTrigger]="dt3" formControlName="endDate" class="txtquestion date-field"
[owlDateTime]="dt3" [readonly]="data.disable" [disabled]="data.disable">

<owl-date-time [pickerType]="'calendar'" [disabled]="data.disable" #dt3></owl-date-time>

参考 - https://www.npmjs.com/package/ng-pick-datetime

【讨论】:

    【解决方案2】:

    我找到了答案。您只需在输入中添加一个属性 [readonly]="true"。这将使其仅选择日期,因此您无法对其进行编辑。

    <input [readonly]="true" type="text"
     placeholder="DD MMM YYYY"
     id="date" [disabled]="!editable"
     [owlDateTimeTrigger]="date" [owlDateTime]="date"
     [min]="min" [max]="max">
    

    我已经编辑了我的 stackblitz。请检查答案。

    【讨论】:

    • 只读不工作,它会打开日历并可编辑。代码 - &lt;input [owlDateTimeTrigger]="dt3" [readonly]="data.disable" [disabled]="data.disable" formControlName="endDate" class="txtquestion" [owlDateTime]="dt3"&gt;
    • 你检查过data.disable 中的内容吗?无论哪种方式,您都不希望您的文本框可以手动编辑。所以,直接设置[readonly]="true"
    • data.disable 是来自 API 的 true
    • 我想我们都在谈论两件不同的事情。使用[readonly]="true",日历将打开。我的问题是我能够在文本框中输入任何文本(请参阅我发布的图片)。如果你不想打开日历,你需要试试这个 - &lt;owl-date-time [disabled]="data.disable" [pickerType]="'calendar'" #date&gt;&lt;/owl-date-time&gt;。在 owl-date-time 标签中添加[disabled]="data.disable"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2018-03-04
    • 2014-12-17
    • 2021-12-21
    • 2023-03-29
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多