小编Sup*_*miu的帖子

window.XMLHttpRequest undefined

我创建了一个node.js应用程序来解析angular2HTML AST和Typescript AST以便提取数据.

要做到这一点,我需要进口@angular/compiler,因此@angular/core,这需要peerDependencyzone.js@^0.6.21.

问题是在加载时node.js应用程序似乎有点破坏了z​​one.js:

<my-project>/node_modules/zone.js/dist/zone.js:1286
var openNative = patchMethod(window.XMLHttpRequest.prototype, 'open', function () { return function (self, args) {
                                                  ^

TypeError: Cannot read property 'prototype' of undefined
at patchXHR (<my-project>/node_modules/zone.js/dist/zone.js:1286:55)
at <my-project>/node_modules/zone.js/dist/zone.js:1253:1
at Zone.Zone.zoneSpec._properties (<my-project>/node_modules/zone.js/dist/zone.js:9:68)
at Object.<anonymous> (<my-project>/node_modules/zone.js/dist/zone.js:12:2)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.require (module.js:468:17)
Run Code Online (Sandbox Code Playgroud)

在我升级之前angular2 final,我正在使用angular 2.0.0-rc.1它需要zone.js@ ^0.6.6,它工作正常.

已经尝试过了

  • 删除zone.js,但不可能因为它破坏了代码. …

node.js angular

6
推荐指数
1
解决办法
356
查看次数

*ngFor trackBy 多个属性

*ngFor在一个 of 对象上使用了一个指令array,这些对象有很多属性。

我希望*ngFor仅当其中三个属性发生更改时才进行更新,但根据TrackByFunction 的文档,没有有效的示例说明如何实现这一点。

我尝试返回一个包含其中属性的对象,但它似乎不起作用,因为当任何其他属性发生更改时,模板仍然会再次呈现。

angular

6
推荐指数
2
解决办法
4622
查看次数

在SDN4 + REST中添加与另一个节点的关系

我已经构建了一个简单的SDN4 + REST API:

一个名为player的端点,它包含一组属性.

每个球员都有一个Set<Player> friends属性.

GET,POST,PUT,DELETE和PATCH就像/ player/{id}上的魅力一样

这里的问题是/ player/{id}/friends.

我不知道如何向玩家添加朋友,这是我到目前为止所尝试的:

  • 测试前:

curl http://localhost:8080/api/player/1/friends: { }

  • 考试

curl -i -X PATCH -H "Content-Type:application/json" -d '{"id":1, "name":"Player2", "password":"", "email":"player2@game.com", "elo":1200}' http://localhost:8080/api/player/1/friends:

HTTP/1.1 204 No Content Server: Apache-Coyote/1.1 Date: Wed, 04 Nov 2015 13:03:17 GMT

  • 测试后:

curl http://localhost:8080/api/player/1/friends { }

也尝试了PUT,结果相同.

我也尝试过POST,但我得到了一个"不允许的方法".

这是我的存储库:

@RepositoryRestResource(collectionResourceRel="player", path="player")
public interface PlayerRepository extends PagingAndSortingRepository<Player, Long> {

    Player findByid(@Param("0") long id);
}
Run Code Online (Sandbox Code Playgroud)

我的模特:

@NodeEntity
public class Player {

    @GraphId Long id;

    String …
Run Code Online (Sandbox Code Playgroud)

spring-data-rest spring-data-neo4j-4

5
推荐指数
1
解决办法
224
查看次数

fakeAsync不等待异步操作完成

上下文

我正在测试一个组件,该组件使用基于可观察的服务来获取一些数据并显示它用于i18n目的.

由于特定需要,i18n服务是定制的.

该组件在开发模式下工作(在某些模板中使用,工作正常)但测试失败.

资源

零件

@Component({
    selector     : "i18n",
    template     : '<span [innerHTML]="text"></span><span #wrapper hidden="true"><ng-content></ng-content><span>',
    encapsulation: ViewEncapsulation.None
})
export class I18nComponent implements OnChanges {

    constructor(private i18n:I18n) {
    }

    @ViewChild('wrapper')
    content:ElementRef;

    @Input('key')
    key:string;

    @Input('domain')
    domain:string;

    @Input('variables')
    variables:Variables = [];

    @Input("plural")
    plural:number;

    text:string;

    ngOnChanges():any {
        this.i18n.get(this.key, this.content.nativeElement.innerHTML, this.variables, this.domain).subscribe((res) => {
            this.text = res;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

I18n.get

public get(key:string,
               defaultValue?:string,
               variables:Variables = {},
               domain?:string):Observable<string>{
    const catalog = {
                         "StackOverflowDomain":
                         {
                             "my-key":"my-value"
                         }
                    };

    return Observable.of(catalog[domain][key]).delay(300);
}
Run Code Online (Sandbox Code Playgroud)

Variables:

export …
Run Code Online (Sandbox Code Playgroud)

jasmine typescript karma-jasmine angular

5
推荐指数
1
解决办法
5344
查看次数

如何编辑about:blank iframe中的内容?

我想编辑about:blank iframe中的内容.我试过了:

document.getElementById('iframe1').contentWindow.document.body.innerHTML="<p>hello</p>";
Run Code Online (Sandbox Code Playgroud)

我得到:

错误:拒绝访问属性"文档"的权限

有人能帮我吗?

html javascript

2
推荐指数
1
解决办法
321
查看次数

为什么使用ngSubmit而不是onSubmit

是什么原因使用ngSubmit提交表单而不是使用onSubmit角度2中的提交按钮.

angular2-forms angular

2
推荐指数
1
解决办法
2090
查看次数

继承依赖注入

我想创建一个通用的api服务,以便更容易创建与模型相关的服务:

export abstract class ModelService<T> {

    constructor(protected apiService: ApiService) {
        //ApiService is a service that wraps Http and adds signature , auth and serialization.
    }

    public getAll(): Observable<T[]> {
        return this.apiService.get<T[]>(this.modelClass, this.baseUrl);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我将创建管理模型的服务Foo:

@Injectabe()
export class FooService extends ModelService<Foo>{

}
Run Code Online (Sandbox Code Playgroud)

但是当我调用时,fooService.getAll().subscribe(...);我得到一个错误,说明apiService是未定义的(无法获取未定义的属性'get').

所以修复是这样添加一个构造函数FooService:

constructor(api: ApiService) {
    super(api);
}
Run Code Online (Sandbox Code Playgroud)

但问题是它不是开发友好的,没有任何东西告诉你这样做,因为FooService扩展ModelService,它应该具有相同的构造函数,因此具有相同的依赖关系.

有没有办法继承依赖?

PS:我已经试图添加@Injectable()ModelService,同样的错误.

编辑tsconfig.json::

{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true, …
Run Code Online (Sandbox Code Playgroud)

typescript angular

2
推荐指数
1
解决办法
146
查看次数

测试 Object.hasOwnProperty

我有一个代码实现,它遍历 anobject的属性。

for (const prop in obj) {
    propsMap[prop] = prop;
}
Run Code Online (Sandbox Code Playgroud)

但正如状态一样,我的 IDE (WebStorm) 建议我添加一个属性检查,obj.hasOwnProperty(prop)以避免迭代不存在的属性:

for (const prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        propsMap[prop] = prop;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是当前的测试总是伴随着obj.hasOwnProperty(prop)存在true,并且覆盖率不是我能得到的最好的,我不知道如果obj实际上没有属性会发生什么prop

javascript code-coverage jasmine

2
推荐指数
1
解决办法
2136
查看次数

使用包含在一个jar中的tomcat部署Web应用程序

我需要创建一个包含我的Tomcat8设置和我的Web应用程序之战的简单jar.

为什么?我想创建一个可移植的Web应用程序,这意味着你可以在任何地方,linux,windows,mac等任何地方托管它.唯一需要的是jar文件,所有数据都保存在包含当前jar文件的文件夹中创建的"data"文件夹中.

我们的目标是创建一个jar文件,你必须开始启动tomcat并完成它,你的web应用程序就绪并且正在聆听.

我不知道它是否可能,但我发现没有使用谷歌.

PS:我将使用VAADIN7(用于Web应用程序),Jersey JAX-RS(用于休息api)和Neo4j(用于数据)

java tomcat jar tomcat8

1
推荐指数
1
解决办法
8959
查看次数

注入类数组

我有一个MetaManager类:

@Injectable()
export class MetaManager{

    constructor(private handlers:Handler[]){
        console.log(handlers);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个类需要Handler[]注册为处理程序.当我得到一些元数据时,我在我的处理程序数组中循环以查看哪个可以处理我的元条目.

话虽如此,问题是我无法在main.ts中提供一个类数组作为配置,这是我尝试过的(以及什么不起作用):

使用String条目(@Provide('HANDLERS')在MetaManager中使用注释:

`bootstrap(AppComponent, [MetaManager,provide('HANDLERS', {useValue: [DebugHandler]}) ]);`
Run Code Online (Sandbox Code Playgroud)

使用接口提供处理程序:

export const HANDLERS: HandlerConfig = {handlers: [<Handler>DebugHandler]};

bootstrap(AppComponent, [MetaManager, provide(HandlerConfig, {useValue: HANDLERS}) ]);
Run Code Online (Sandbox Code Playgroud)

使用Handler[]类提供者:

bootstrap(AppComponent, [MetaManager, provide(Handler[], [DebugHandler])]);
Run Code Online (Sandbox Code Playgroud)

我想提供一个类数组,因为MetaManager将来需要有多个Handler,通知,错误等...

编辑:

使用多提供程序给我一个No provider for Array! (ApiService -> MetaManager -> Array)错误:

元manager.ts:

@Injectable()
export class MetaManager{

    constructor(private handlers:Handler[]){
        console.log(handlers);
    }
}
Run Code Online (Sandbox Code Playgroud)

main.ts:

bootstrap(AppComponent,
    [   MetaManager,
        provide(Handler, {useClass: DebugHandler, multi: true}),
        provide(Handler, {useClass: NotificationHandler, …
Run Code Online (Sandbox Code Playgroud)

angular2-injection angular

1
推荐指数
1
解决办法
1705
查看次数