Angular 打字机脚本:";X";不可转让给类型、类型的财产”;“是”;不相容
注:我对Angular2和打字很陌生,所以很抱歉我的无知 问题是: 我想做的是从结束日期/时间中减去开始日期/时间,然后在计算公式中使用它显示为“calc”。问题是,我可以给calc一个静态的数字,但如果我尝试使用数学公式,它在传输时会出现各种错误: 一, 模拟订单.ts(4,14):错误TS2322:类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不能分配给类型“order[]” 类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不可分配给类型“order” 属性“检查”的类型不兼容 类型“string”不可分配给类型“number” 下面是我遇到这些问题的子组件。 请参见第28行this.calc:Angular 打字机脚本:";X";不可转让给类型、类型的财产”;“是”;不相容,angular,date,typescript,Angular,Date,Typescript,注:我对Angular2和打字很陌生,所以很抱歉我的无知 问题是: 我想做的是从结束日期/时间中减去开始日期/时间,然后在计算公式中使用它显示为“calc”。问题是,我可以给calc一个静态的数字,但如果我尝试使用数学公式,它在传输时会出现各种错误: 一, 模拟订单.ts(4,14):错误TS2322:类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不能
// order.ts
import { Component, OnInit } from '@angular/core';
export class Order {
order_no: string;
scheduled: string;
lateral: string;
start_time: string;
checks: number;
stop_time: string;
status: string;
approx_cfs: string;
approx_hrs: string;
approx_af: string;
calc: number;
constructor(data: {} = {}) {
this.order_no = data["order_no"] || "";
this.scheduled = data["scheduled"] || "";
this.lateral = data["lateral"] || "";
this.start_time = data["start_time"] || "";
this.checks = data["checks"] || "";
this.stop_time = data["stop_time"] || "";
this.status = data["status"] || "";
this.approx_cfs = data["approx_cfs"] || "";
this.approx_hrs = data["approx_hrs"] || "";
this.approx_af = data["approx_af"] || "";
this.calc = (!this.stop_time ? ((new Date().getTime() - new Date(this.start_time).getTime()) / 1000.0 / 60.0 / 60.0) * this.checks * 0.0825 : ((new Date(this.stop_time).getTime() - new Date(this.start_time).getTime()) /1000.0 / 60.0 / 60.0) * this.checks * 0.0825);
console.log(this.calc);
};
};
我敢肯定,问题的一部分是我试图对日期使用数学运算,然后将结果分配给数字类型
以下命令调用此组件以在服务中使用:
// order.service.ts
import { Injectable } from '@angular/core';
import { Order } from './order';
import { ORDERS } from './mock-orders';
@Injectable()
export class OrderService {
getOrders(): Promise<Order[]> {
return Promise.resolve(ORDERS);
}
}
由于Date.parse()
首先尝试将输入转换为数字,然后从中获取等效的日期,在js中,使用诸如“-”或“/”等数字以外的字符转换字符串将导致NaN结果中的Date.parse也将返回NaN。您可以使用new Date(str:String)
在本例中,从有效的日期字符串生成日期对象。您还可以使用getTime()
函数对日期进行数学运算
let数据={
订单号:12346,
计划:“08/17/16 11:45”,
横向:“L1-8-1-T7,L1-8-1-T6”,
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:“”,
状态:“正在运行”,
约为:25.00,
大约10小时:,
约为20.63英尺,
};
this.order_no=data[“order_no”]| |“”;
this.scheduled=数据[“scheduled”]| |“”;
this.lateral=数据[“lateral”]| |“”;
this.start_time=data[“start_time”]| |“”;
this.checks=数据[“checks”]| |“”;
this.stop_time=data[“stop_time”]| |“”;
this.status=data[“status”]| |“”;
this.approx_cfs=数据[“approx_cfs”]| |”;
this.approx_hrs=数据[“approx_hrs”]| |“;
this.approx_af=数据[“approx_af”]| |“;
this.calc=(!this.stop_time?((new Date().getTime()-new Date(this.start_time).getTime())/1000.0/60.0/60.0)*this.checks*0.0825:((new Date(this.stop_time).getTime()-new Date(this.start_time).getTime())/1000.0/60.0)*this.checks*0.0825);
console.log(calc);
因为Date.parse()
首先尝试将输入转换为数字,然后从中获取等效的日期,在js中,使用诸如“-”或“/”等数字以外的字符转换字符串将导致在NaN结果中日期。parse也将返回NaN。您可以使用新日期(str:String)
在本例中,从有效的日期字符串生成日期对象。您还可以使用getTime()
函数对日期进行数学运算
let数据={
订单号:12346,
计划:“08/17/16 11:45”,
横向:“L1-8-1-T7,L1-8-1-T6”,
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:“”,
状态:“正在运行”,
约为:25.00,
大约10小时:,
约为20.63英尺,
};
this.order_no=data[“order_no”]| |“”;
this.scheduled=数据[“scheduled”]| |“”;
this.lateral=数据[“lateral”]| |“”;
this.start_time=data[“start_time”]| |“”;
this.checks=数据[“checks”]| |“”;
this.stop_time=data[“stop_time”]| |“”;
this.status=data[“status”]| |“”;
this.approx_cfs=数据[“approx_cfs”]| |”;
this.approx_hrs=数据[“approx_hrs”]| |“;
this.approx_af=数据[“approx_af”]| |“;
this.calc=(!this.stop_time?((new Date().getTime()-new Date(this.start_time).getTime())/1000.0/60.0/60.0)*this.checks*0.0825:((new Date(this.stop_time).getTime()-new Date(this.start_time).getTime())/1000.0/60.0)*this.checks*0.0825);
console.log(calc);
问题是您试图将字符串类型值分配给类型为number的checks变量
开始时间:字符串;
支票:号码;
停止时间:字符串;
指定值:-
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:'',
问题是您试图将字符串类型值分配给类型为number的checks变量
开始时间:字符串;
支票:号码;
停止时间:字符串;
指定值:-
开始时间:“08/17/16 15:30”,
支票:“20.25”,
停止时间:“,
此。checks
声明为字符串,您正在尝试对其他数据类型执行一些数学运算。这可能就是问题所在。尝试将其声明为数字。使用数字键入更新。此。checks
声明为字符串,您正在尝试对其他数据执行一些数学运算类型。这可能就是问题所在。尝试将其声明为数字。使用数字键入进行更新。这是进度。我现在得到错误-->类型“{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…”不可分配给类型“order[]”类型{order\u no:string;scheduled:string;lateral:string;start\u time:string;checks:string;stop\u…'不可分配给类型'order'。属性'checks'的类型不兼容。类型'string'不可分配给类型'number'。这是进度。我现在得到错误-->类型'{order_no:string;scheduled:string;lateral:string;start_time:string;checks:string;stop_…'不可分配给类型'order[]'{order_no:string;scheduled:string;lateral:string;start_time:string;checks:string;stop_…'不可分配给类型'order'。属性'checks'的类型不兼容。类型'string'不可分配给类型'number'。如果我将其更改为string
// mock-orders.ts
import { Order } from './order'
export const ORDERS: Order[] = [
{order_no: '12345',
scheduled: '08/16/16 13:45',
lateral: 'L1-8-1-T7, L1-8-1-T6',
start_time: '08/16/16 15:45',
checks: '23.25',
stop_time: '08/17/16 15:30',
status: 'Delivered',
approx_cfs: '25.00',
approx_hrs: '22',
approx_af: '45.38',
},
{order_no: '12346',
scheduled: '08/17/16 11:45',
lateral: 'L1-8-1-T7, L1-8-1-T6',
start_time: '08/17/16 15:30',
checks: '20.25',
stop_time: '',
status: 'Running',
approx_cfs: '25.00',
approx_hrs: '10',
approx_af: '20.63',
},
{order_no: '12346',
scheduled: '08/17/16 11:45',
lateral: 'L1-8-1-T7, L1-8-1-T6',
start_time: '08/17/16 15:30',
checks: '20.25',
stop_time: '',
status: 'Running',
approx_cfs: '25.00',
approx_hrs: '10',
approx_af: '20.63',
},
{order_no: '12346',
scheduled: '08/17/16 11:45',
lateral: 'L1-8-1-T7, L1-8-1-T6',
start_time: '08/17/16 15:30',
checks: '20.25',
stop_time: '',
status: 'Running',
approx_cfs: '25.00',
approx_hrs: '10',
approx_af: '20.63',
}
];