小编VSO*_*VSO的帖子

打字稿日期类型?

如何在TypeScript中表达日期?日期不是TypeScript类型,所以我使用anyobject?似乎会有一种"正确"的方式:

let myDate: any = new Date();
Run Code Online (Sandbox Code Playgroud)

尽管这是一个如此简单的问题,我在谷歌上找不到多少.

date typescript

168
推荐指数
3
解决办法
22万
查看次数

RouterModule.forRoot(ROUTES)vs RouterModule.forChild(ROUTES)

这两者之间的区别是什么?每种用例有什么用处?

文档是不完全帮助:

forRoot创建一个包含所有指令,给定路由和路由器服务本身的模块.

forChild创建一个包含所有指令和给定路由的模块,但不包括路由器服务.

我的模糊猜测是,一个用于'main'模块,另一个用于任何导入的模块(因为它们已经可以从主模块获得服务),但我真的不能想到用例.

router angular

88
推荐指数
4
解决办法
7万
查看次数

RxJS MergeMap如何工作?

我根本不明白其目的mergeMap.我听过两个"解释:

  1. LINQ中的"就像SelectAll" - nope.
  2. "嗯,这是RxJS mergemap" - nope的组合(或者我不能复制这个).

请考虑以下代码:

    var obs1 = new Rx.Observable.interval(1000);
    var obs2 = new Rx.Observable.interval(1000);

    //Just a merge and a map, works fine
    obs1.merge(obs2).map(x=> x+'a').subscribe(
      next => console.log(next)
    )

    //Who know what - seems to do the same thing as a plain map on 1 observable
    obs1.mergeMap(val => Rx.Observable.of(val + `B`))
        .subscribe(
          next => console.log(next)
        )
Run Code Online (Sandbox Code Playgroud)

JS Bin

标有"谁知道什么"的最后一篇文章只不过是一张地图obs1- 重点是什么?

什么是mergeMap真正做到?什么是有效用例的示例?(最好带一些代码)

文章没有帮助我的人(mergeMap代码上面是其中之一):1,2

javascript observable rxjs angular

45
推荐指数
2
解决办法
3万
查看次数

什么是Angular 2不透明令牌和什么是重点?

我遇到了'不透明的标记'作为在Angular 2中实现全局常量的解决方案,例如:在Angular 2中定义全局常量

尽管阅读了文档,我似乎无法理解这一点.

使用OpaqueToken比使用字符串作为标记更可取,因为多个提供程序使用与两个不同标记相同的字符串可能导致冲突.

什么?什么是开始的Angular2令牌?所有我得到的谷歌都是JSON网络代币(他们在auth等中的角色等)的答案,据我所知,但显然没有任何关联.

什么是不透明的令牌?它是干什么用的?

PS更多关于不透明标记的文档用于提供常量.然而,他们并没有帮助我.

angular2-opaquetoken angular

35
推荐指数
2
解决办法
2万
查看次数

量角器"by.css()"与"$()"美元符号vs"$$()"'Bling Bling'

我真的不明白$和$$命令的用途.我认为它们只是'by.css'的替代品,但为什么是$$?

<element id = "eId"></element>
Run Code Online (Sandbox Code Playgroud)

我想,鉴于上述情况,这些将是相同的:

element(by.css('#eId'));
Run Code Online (Sandbox Code Playgroud)

element($('#eId'));
Run Code Online (Sandbox Code Playgroud)

但是,第一个工作,第二个不工作.为什么,这三者有什么区别?

文档是帮助不大.它们似乎暗示"$"仅用于链接,例如element(by.css('#eId')).element($('#childId'));或"选择第一个元素,然后在第一个元素中选择第二个元素." 但是,我已经看到使用$来选择第一个元素的示例.

无论如何,这有很多文字"三者之间有什么区别(by.css,$和$$)?"

javascript testing selenium angularjs protractor

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

如何通过Gulp任务增加版本号?

我想myConstantsFile.js用另一个字符串替换javascript文件()中指示版本号的字符串.因此,例如,我的版本号看起来像这样:"01.11.15",myConstantsFile.js 与其他常量一样写成:

.constant('productVersion', '1.11.15'); 
Run Code Online (Sandbox Code Playgroud)

现在,我的任务看起来像这样:

gulp.task('increment-version', function(){
    gulp.src(['./somedir/myConstantsFile.js'])
        .pipe(replace(/'productVersion', '(.*)'/g, '99.99.99'))
        .pipe(gulp.dest('./somedir/'));
});
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用的是常量,而不是运行的增量代码,如下所示:

    var numberString = '0.0.1';
    var versionParts = numberString.split('.');
    var vArray = {
      vMajor : versionParts[0],
      vMinor : versionParts[1],
      vPatch : versionParts[2]
    } 

    vArray.vPatch = parseFloat(vArray.vPatch) + 1;
    var periodString = ".";

    var newVersionNumberString = vArray.vMajor + periodString + 
                                vArray.vMinor+ periodString + 
                                vArray.vPatch; 
Run Code Online (Sandbox Code Playgroud)

我需要:

  1. 一种通过文件通过正则表达式选择当前版本号的方法.
  2. 要知道我可以将逻辑放在最后一个代码块中以增加数字并构建新字符串.

javascript build-process angularjs gulp

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

Chain Angular $ http调用正常吗?

我现在已经阅读了大约$ q和承诺几天了,我似乎也明白了...... 我在实践中遇到以下情况:

  1. 发出$ http请求并检查是否可以进行后续调用.
  2. 如果第一次呼叫失败,则返回"无数据",如果成功并表示可以进行呼叫,则进行第二次呼叫,如果不​​成功,则再次进行"无数据".如果第二次调用成功,则返回数据,如果不是 - "无数据".它看起来像这样(大约,我简化了一般的想法,所以不要担心这里的小错误):

            return $http.get (something)
                .then(function(allowedAccess){
                    if(allowedAccess){
                        return $http.get (somethingElse)
                            .then( function(result){return {data:result} },
                            function(error){return {data:"n0pe"} }
                        )
                    } else {
                        return {data:"n0pe"}
                    }
                },
                function(){ return {data:"n0pe"} });
    
    Run Code Online (Sandbox Code Playgroud)

有人告诉我在这里使用$ q.我真的不明白我会怎样或为什么.$ http电话已经是承诺.

如果有办法使这个更清洁,我没有看到它.刚刚完成了关于这个主题的重新阅读这篇文章.基本上,我错过了什么/有没有更好的方法来做到这一点?

编辑:也只是重新阅读链接承诺的教程 - 它根本不处理呼叫失败.基本上将此作为尽职调查发布.

编辑2:这更详细地阐述了我要问的理论,摘自第一篇文章:

这是一个简单的例子.如果你的then()回调返回另一个promise,它会变得非常强大.在这种情况下,下一个then()只会在承诺结算后执行.例如,此模式可用于串行HTTP请求(请求取决于前一个请求的结果):

这似乎是在谈论像这样的链:

   asyncFn1(1)
    .then(function(data){return asyncFn2(data)})
    .then(function(data){return asyncFn3(data)})
Run Code Online (Sandbox Code Playgroud)

所以,如果我理解正确这一点a).不适用于我,因为我没有第三功能.B).如果我有三个函数会适用于我,因为当我在第一个$ http请求中运行if语句时,只有在if语句中我才会返回另一个promise.所以,理论上,如果我有三个异步函数来链接,我需要将我的if语句放在一个promise中吗?

angularjs angular-promise

17
推荐指数
2
解决办法
2万
查看次数

下拉导致按钮失去焦点

使用AngularAngular UI-Bootstrap.

我在textAngular中创建了一个下拉菜单.当您单击文本框或其中一个菜单选项以外的其他内容时,它会禁用该菜单.这是期望的行为.

但是,当使用FireFox时,打开一个下拉菜单会使用户离开菜单(即使他们使用菜单中的下拉菜单).如果它有任何帮助,看起来下拉打开后面和文本框的侧面.

在这种情况下,一张图片值1000字.左边是Chrome(想要的行为),右边是Firefox(不是想要的行为).如果嵌入的图像太小,请单击我.

在此输入图像描述

这是代码.这是工具注册的显示部分.对于那些不熟悉textangular的人 - 它只是创建按钮的代码:

    display: '<span class="btn-group" dropdown dropdown-append-to-body style="padding: 0px 0px 0px 0px">' +
    '<button class="btn btn-default dropdown-toggle" dropdown-toggle type="button" ng-disabled="showHtml()">' +
    '   <span>Items Fields</span>' +
    '</button>' +
    '<ul class="dropdown-menu">' +
    '   <li ng-repeat="o in options">' +
    '       <a ng-click="action(o)">{{o.name}}</a>' +
    '   </li>' +
    '</ul>' +
    '</span>',
Run Code Online (Sandbox Code Playgroud)

编辑:

  1. 复制问题的Plunker是:针对plnkr的Clicky(问题的焦点是"项目字段"按钮 - 在Chrome中有效,在firefox中不起作用.
  2. 繁荣 - 赏金!

PS请不要被代码量吓倒.唯一相关的html位于app.js文件中,位于taRegisterTool'itemFields'下.

taRegisterTool('itemFields', {
            display:
Run Code Online (Sandbox Code Playgroud)

javascript twitter-bootstrap angularjs angular-ui-bootstrap textangular

15
推荐指数
3
解决办法
1760
查看次数

如何使用Webpack或Angular CLI将角元素编译为Web组件?

我使用Pascal Precht的教程通过Angular构建了一个简单的Web组件,您可以在这里看到它.它自动神奇地编译链接中的Stackblitz,但不是本地.

我的最终目标是将生成的Web组件的代码放在本地的单独文件中.最终,我会将其上传到某处并通过单个<script>标签将其拉入,就像普通的raw-html/javascript Web Components一样.我认为问题不言自明,但如果您愿意,可以阅读以下详细信息:


细节:

要在上面的链接中总结我的代码,我有一个非常基本的组件:

import { Component } from '@angular/core';

@Component({
  selector: 'hello-world',
  template: `<h1>Hello world</h1>`
})

export class HelloComponent  {}
Run Code Online (Sandbox Code Playgroud)

我有一个模块:

import { NgModule, Injector } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { createCustomElement } from '@angular/elements'
import { HelloComponent } from './hello.component';

@NgModule({
  imports: [BrowserModule],
  declarations: [HelloComponent],
  entryComponents: [HelloComponent]
})

export class AppModule { 
  constructor(private injector: Injector) {}
  ngDoBootstrap() {
    const HelloElement = createCustomElement(HelloComponent, …
Run Code Online (Sandbox Code Playgroud)

webpack angular-cli angular angular-elements

14
推荐指数
2
解决办法
1890
查看次数

Kotlin - 如果不是空的话,用改进的Obj道具覆盖Obj道具

TL; DR:

如何减少冗余(任何有效的方法)?

if (personModification.firstName != null) {person.firstName = personModification.firstName}
if (personModification.lastName != null) {person.lastName = personModification.lastName}
if (personModification.job != null) {person.job = personModification.job}
Run Code Online (Sandbox Code Playgroud)

长版:我有一个简单的问题.我有一节课Person:

class Person (val firstName: String?, 
              val lastName: String?, 
              val job: String?)
Run Code Online (Sandbox Code Playgroud)

我有一个叫做的课PersonModification:

class PersonModification(val firstName: String?, 
                         val lastName: String?, 
                         val job: String?)
Run Code Online (Sandbox Code Playgroud)

任务是PersonPersonModification值覆盖任何属性值,如果PersonModification属性不是null.如果你关心,这背后的业务逻辑是一个API端点,它修改Person并接受一个PersonModification参数(但可以更改所有或任何属性,因此我们不希望用空值覆盖有效的旧值).对此的解决方案看起来像这样.

if (personModification.firstName != null) {person.firstName = personModification.firstName}
if (personModification.lastName != null) {person.lastName = personModification.lastName}
if …
Run Code Online (Sandbox Code Playgroud)

optimization dry kotlin

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