【发布时间】:2018-10-25 17:03:17
【问题描述】:
在这个 Angular 7 应用程序中,用户需要从日历输入中选择一个日期,然后生成 40 天前的日期。我无法在 Typescript 中弄清楚这一点。有很多 JavaScript 解决方案,但我不知道如何将它们转换为对 Angular 友好的打字稿版本。现在我有两个函数都试图做到这一点(生成 1 和生成 2),但都不起作用。
Generate 1 假设使用我导入的 'add-subtract-date' (npm),但我收到 Typescript 错误...“错误 TS2580:找不到名称 'require ’。”
Generate 2 没有错误,只是什么都不做。
我也不认为我的 HTML 是正确的。我对任何新想法持开放态度,只需将 HTML 也包括在内。
component.ts...
import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core';
import { CalculatorService } from '../calculator.service';
import { add, subtract } from 'add-subtract-date';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
lastWorkingDay: any;
isWeekday: string;
public fortyDaysDate: any;
private _retireSet: Date;
get retireSet(): Date {
return this._retireSet;
}
set retireSet(value: Date) {
this._retireSet = value;
}
constructor(private calculatorService: CalculatorService) {
}
ngOnInit() {
}
//Generate 1, this worked when using "const d: Date = new Date()"
public daysForty(): any {
const d: Date = this.retireSet;
const fortyDaysBack = subtract(d, 40, "days");
this.fortyDaysDate = fortyDaysBack;
}
// Generate 2, this does not work
protected generateLastWorkingDay(): Date {
const lastWorkingDay = new Date(Date.now());
while(!this.isWorkingDay(lastWorkingDay)) {
lastWorkingDay.setDate(lastWorkingDay.getDate()-40);
}
return lastWorkingDay;
}
private isWorkingDay(date: Date) {
const day = date.getDay();
const isWeekday = (day > 0 && day < 6);
return isWeekday;
}
}
component.html...
<form>
<div class="container">
<div class="form-group">
<label for=""retireSet"">Set Date</label>
<input type="datetime-local" id=""retireSet""
name="RetireCalculatorSetDate" value="retireSet" ngModel
#RetireCalculatorSetDate="ngModel" [(ngModel)]="retireSet" class="form-control" />
</div>
<div class="form-group">
<label for="staffID">Staff ID</label>
<input type="text" id="staffID" name="RetireCalculatorStaffID"
[(ngModel)]="RetireCalculatorStaffID"
class="form-control" />
</div>
<div>
<button type="button" class="btn btn-success"
(click)="daysForty()">Generate 1</button>
<input type="text" name="RetireCalculatorDay45" value="fortyDaysDate" ngModel #RetireCalculatorDay45="ngModel"
[(ngModel)]="fortyDaysDate" class="form-control" />
</div>
<div>
<button type="button" class="btn btn-success" (click)="generateLastWorkingDay()"> Generate 2 </button>
<input type="date" class="text-field w-input" name="LastWorkingDay"
value="LastWorkingDay" [(ngModel)]="LastWorkingDay" />
</div>
<button type="button" class="btn btn-success" (click)="sendForm($event)">Submit</button>
</div>
</form>
【问题讨论】:
-
TypeScript 是 JavaScript。为什么不能使用 JS 版本?
-
当我尝试在 Visual Studio Code 中输入 JS 时,出现错误。然后我不确定如何访问 HTML 中的 JS 结果。我仍然是 Jr. Dev(如果你没有注意到的话)。感谢您的任何建议。
-
什么样的错误?你能用有问题的代码编辑你的问题吗
-
我也推荐使用momentjs [momentjs.com/]
标签: angular typescript angular7