我正在研究一个简单的nodejs 电子(以前称为原子壳)项目.我正在使用angular 2编写它,使用项目设置与他们在打字稿文档中建议的相同项目设置:
TSC:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
我需要运行一个命令,我发现我可以使用节点"child_process"来完成它.无论如何我无法找到"import"或"require"它,同时从node.d.ts文件中使用它的类型.我在node.d.ts文件中找到了符合我需要的"child_process"接口,这就是它在node.d.ts文件中查看的方式:
declare module "child_process" {
import * as events from "events";
import * as stream from "stream";
export interface ChildProcess extends events.EventEmitter {
stdin: stream.Writable;
stdout: stream.Readable;
stderr: stream.Readable;
pid: number;
kill(signal?: string): void;
send(message: any, sendHandle?: any): void;
disconnect(): void;
unref(): void;
}
export function spawn(command: string, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的角度2应用程序迁移到角度4和ngrx 4.
我正在处理一个奇怪的打字稿编译问题,这是我在此次更新之前没有的.我在离线环境中工作,所以我不能在这里分享确切的代码.
我在网上寻找问题,我能找到的最接近的问题就是这个问题: 关于有效载荷类型 的问题这个问题中的代码与我试图做的有些相似,但区别在于我从动作中删除了ActionTypes对象(这是该问题的建议答案)但它没有解决我的编译错误.
我不能把确切的代码我解决这里,但我完全基于github上的ngrx示例ngrx官方示例我的代码
我的代码基本相同,当我尝试从操作中获取有效负载时,每个reducer情况(在交换机情况下)都会发生错误,它告诉我类似于:
Type 'string | Book | Book[]' is not assignable to type 'Book'. Type 'string' is not assignable to type 'Book'.
Run Code Online (Sandbox Code Playgroud)
(在我的代码中,而不是Book我有不同的类,但它的想法几乎相同)
现在我通过从A |中转换动作类型来解决错误 B | B是与交换机中的情况相对应的特定动作类型(使用as typescript关键字).这个解决方案感觉很糟糕和hacky,我想知道是否有更好的解决方案.
我使用的版本:typescript:2.4.1(我怀疑它可能连接到ngrx示例,不使用与我相同的更新的打字稿版本)ngrx @ store:4.0.3 ngrx @ core:1.2.0 angular :(最新的17.9.17,角度内有很多包,我不认为它对于这个错误使用哪个角度非常重要,但我说这只是为了安全方面)打字稿:(2.4.1)(我读了ngrx关于需要升级打字稿的官方迁移文档,所以我做了)
更新:由于我得到了一个与我的问题无关的答案,而且我也被问过,这是我的代码中的一部分失败了(我无法发布确切的帖子,但我手工复制相关部分):
任务reducer.ts:
import * as MissionActionsFile from "./mission-actions";
export type State = .... // doesnt matter
const initialState: State = // doesnt matter as well
export function reducer(state: State …Run Code Online (Sandbox Code Playgroud) 我最近尝试使用角度2创建自己的自定义表单控件.自定义控件应该有2个输入,并编辑具有已知结构的现有对象.例如:
class model {
public fieldOne: number;
public fieldSec: number;
}
Run Code Online (Sandbox Code Playgroud)
我遵循了我在这里找到的好解释: 编写自定义表单控件的指南
它工作正常,除了指南没有提到如何将自定义控件表单验证连接到使用它的表单.让我们看一个简化的例子:
自定义控件模板看起来像这样:
<form>
<input [(ngModel)]="existingModel.fieldOne">
<input [(ngModel)]="existingModel.fieldSec" required>
</form>
Run Code Online (Sandbox Code Playgroud)
我们用它来编辑现有的模型,其值为:
{
fieldOne: 20,
fieldSec: undefined
}
Run Code Online (Sandbox Code Playgroud)
我们在我的应用程序中以某种形式使用它,我们需要自定义控件来编辑此模型:
<form #formVar="ngForm">
<my-custom-control [(ngModel)]="existingModel" required>
</my-custom-control>
</form>
Run Code Online (Sandbox Code Playgroud)
在我可以编辑模型的问题上,这种示例适用于我的应用程序.问题是我希望在表单无效时向用户显示,如果我查看formVar.valid,即使existingModel.fieldSec未定义并且在自定义控件表单中对其进行了必需的验证,它也将为true .
html-validation angular2-forms angular2-template angular2-components angular