【问题标题】:How to use DatePicker in NativeScript dialogs如何在 NativeScript 对话框中使用 DatePicker
【发布时间】:2019-05-24 06:45:05
【问题描述】:

我在NativeScript/Angular 应用之一中有一个DatePicker,如下所示。

<StackLayout class="m-x-10 form" [formGroup]="myForm">
<DockLayout stretchLastChild="true">
        <Label text="Date" class="m-x-auto m-y-auto" dock="left"></Label>
        <StackLayout class="input-field">
          <DatePicker loaded="onDatePickerLoaded" formControlName="transDate" minDate="{{ minDate }}" maxDate="{{ maxDate }}"></DatePicker>
        </StackLayout>
      </DockLayout>
</StackLayout>

我想在对话框上显示 DatePicker 并将结果分配给 formgroup 属性,如下所示。

<TextField formControlName="transDate" (tap)="showDatePicker()"></TextField>

showDatePicker() {
    let options = {
      title: "Transaction Date",
      message: "Select Date",
      cancelButtonText: "Cancel",
      actions: // need to show DatePicker here
    };
    action(options).then((result) => {
      if (result !== 'Cancel') {
        this.myForm.controls['transDate'].setValue(result);
      }
    });
  }

我该怎么做?

正如@Manoj 建议添加tns plugin add nativescript-modal-datetimepicker 并将其文件移动到应用程序文件夹并从新路径导入工作正常。

现在我按照文档在App_Resources/Android/values-21/styles.xml 中更改了&lt;item name="android:datePickerMode"&gt;calendar&lt;/item&gt;,但仍然只显示微调器。

【问题讨论】:

  • 您可以在对话框中将 ngModel 与 DatePicker 一起使用,并将结果分配给 formgroup 属性。
  • 请提供任何示例链接。

标签: angular nativescript angular2-nativescript


【解决方案1】:

对于 2 年后来此主题的人来说,使用 NativeScript 的官方日期选择器是一个更好的选择:

https://github.com/NativeScript/plugins/tree/main/packages/datetimepicker

我犯了一个错误,首先尝试了 nativescript-modal-datetimepicker 插件,不幸的是它在 iOS 14 上崩溃了,而且作者似乎没有积极修复问题。

【讨论】:

  • 是的!这是正确答案!
【解决方案2】:

试试nativescript-modal-datetimepicker插件

tns plugin add nativescript-modal-datetimepicker

【讨论】:

  • 它在预览应用程序中不可用,因此每次运行 tns run android --build 并将 apk 文件带到移动设备上都是耗时的活动。这就是我寻找替代品的原因。
  • 该插件不使用任何原生依赖,因此它应该与 Playground 兼容。只是你必须使用相对路径导入。
  • 插件 nativescript-modal-datetimepicker 未包含在设备 b4d842bc-7e13-4e56-ac8b-de5eb0a8f103 上的预览应用中,因此无法使用。
  • 我很确定我在说什么。您可以在项目中包含插件文件,然后使用相对路径导入它。
  • 了解并现在使用微调器但不使用日历。我需要为此做任何额外的事情吗?
【解决方案3】:

我已经为您创建了示例here。 您需要使用custom Dialog

在 ShowPicker 函数中()

let options: ModalDialogOptions = {
            viewContainerRef: this.viewContainerRef
        };

       this.modalService.showModal(DialogContent, options)
    .then((dialogResult: string) => {
 this.myForm.controls['transDate'].setValue(result);
 this.result = dialogResult})

您可以在关闭回调中传递选定的日期。

【讨论】:

  • 我刚刚添加了 console.error(dialogResult);到您的游乐场链接,因为没有确定,取消按钮可见,结果始终未定义。这是链接play.nativescript.org/?template=play-ng&id=JcHXHl&v=2
  • 这只是展示您应该如何进行的示例。关键是使用自定义对话框并将信息传递回关闭回调。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 2012-08-07
相关资源
最近更新 更多