小编Rol*_*ácz的帖子

Angular2:*ngFor在更新数组时不更新

我有一个对象数组(让我们称之为arr).在方法的一个组件输入中,(change)我修改了这些对象的属性之一,但在视图(*ngFor)中没有任何变化.我读到Angular2变化检测不检查数组或对象的内容,所以我尝试了这些:

this.arr = this.arr.slice();
Run Code Online (Sandbox Code Playgroud)

this.arr = [...this.arr];
Run Code Online (Sandbox Code Playgroud)

但是视图没有改变,它仍然显示旧的属性.在(change)方法中console.log()我得到了正确的数组.奇怪,但是这一个工程:this.arr = []; 我想NgZonemarkForCheck()太.

angular2-changedetection angular

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

Angular:Validators.email如果为空则无效

我正在Angular(4.0)中创建一个包含form(FormGroup)的应用程序.在这种形式我有一个电子邮件输入(带FormControl),我Validators.email用于验证.

import { Validators } from '@angular/forms';

// ...
let validators = [];
if ([condition]) {
    validators.push(Validators.email);
}
let fc = new FormControl([value] || '', validators);
// ...
Run Code Online (Sandbox Code Playgroud)

但是当输入为空时,它是无效的(它有一个ng-invalid类),即使它不是必需的.

这是一个正确的行为吗?我能做什么?

javascript forms validation angular

15
推荐指数
4
解决办法
1万
查看次数

如何在Angular中触发文件上传输入?

如何在Angular 4中触发文件上传输入?我正在尝试,但它不起作用.

我不必输入按钮,而是单击div并触发输入类型按钮.

app.html:

<input id="custom-input"  type="file" > 
<div (click)="myEvent(custom-input)">Click here to upload file</div>
Run Code Online (Sandbox Code Playgroud)

app.ts:

myEvent(event) {
    alert("event");
    event.nativeElement.click();
}
Run Code Online (Sandbox Code Playgroud)

angular

9
推荐指数
2
解决办法
9238
查看次数

单击注销时如何在 Angular 中调用 canDeactivate

在我当前的注销呼叫中,我有这样的事情:

 getLogoutConfirmation(){
   // get confirmation in modal and perform logout
   // redirect to login page
 }
Run Code Online (Sandbox Code Playgroud)

问题是,当执行注销并调用重定向到登录时,会在该路由上调用 canDeactivate 防护,但用户已经注销。

那么如何在执行注销之前调用 canDeactivate 守卫并在用户不想离开时取消注销操作。

谢谢。

javascript angular angular-router-guards angular-router

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

使用NPM和GIT的Angular包:repo中的dist文件夹?

我想要实现的目标:

我已经创建了一个Angular模块,我希望在npm install我的GIT仓库(我不想使用npm publish它,因为它是私有代码)在其他项目中.

我正在使用ng-packagr(https://github.com/dherges/ng-packagr)获取Angular包格式.这将为dist新创建的包创建一个文件夹.

这是我用GIT安装mypackage的方法,例如:

npm install https://SOMETHING/SOMETHING.git#v0.1.0
Run Code Online (Sandbox Code Playgroud)

我的问题是:

我的问题是我尝试了这两件事,但我认为它们都是丑陋或糟糕的:

  1. 我把一切都对我GIT回购(我删除dist.gitignore),但经过npm installnpm start我得到一个模块没有发现错误.我认为这甚至不起作用,因为包在子文件夹中dist(我从中导入我的模块node_modules/mypackage/dist).另一个问题是,当我安装软件包时,我的源文件也存在,这不是最好的.

  2. 我只将dist文件夹推送到GIT仓库.然后我可以在另一个项目中轻松安装它,它可以工作,没有错误.但我的问题是我应该把我的代码推到其他地方.有了这个,我必须有2个GIT回购.一个用于我的实际代码,一个用于包(dist文件夹).

我知道必须有某种更好的解决方案.我读了很多文章,但我一无所获.

谁能为此提出一个好的解决方案?或者我应该选择第二个?

git npm angular-module npm-install angular

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

异步管道在Angular的输入中不起作用

我习惯在Angular HTML模板中使用带有"as"的异步管道,以避免复制可观察的订阅,如下所示:

<component *ngIf="(selected$ | async) as selected"></component>
Run Code Online (Sandbox Code Playgroud)

那么我可以在模板中的任何其他地方使用"选中".

但是如果我尝试像这样使用它,在输入中:

<component [param]="(selected$ | async) as selected"></component>
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Unexpected token 'as' at column 21 in [categories$ | async as categories]
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?谢谢!

rxjs angular

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

Angular:如何在模块中声明变量并从所有组件访问它?

我想在我的 app.module 中声明变量并从子组件访问它,
而无需再次声明或使用全局注入。

这可能吗?

angular

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

角度:我想在元素加载时调用一个函数

我想在加载元素时调用带有参数的函数。就像angualrjs中的nginit一样。我们可以在Angular 4中做到吗?

<div *ngFor="let item of questionnairelist"  (onload)="doSomething(item.id)" ></div>
Run Code Online (Sandbox Code Playgroud)

我的打字稿功能:

doSomething(id) {
    console.log(id);
}
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

Java 8收集到Map <String,List <Object >>

我有两个对象.第一个:

public final class Object1 {
    private String a;
    private String b;
    // constructor getter and setter
}
Run Code Online (Sandbox Code Playgroud)

第二个:

public class Object2 {
    private BigDecimal value1;
    private BigDecimal value2;
    // constructor getter and setter
}
Run Code Online (Sandbox Code Playgroud)

我有一个Map<Object1, Object2>:

    Object1{a="15", b="XXX"}, Object2{value1=12.1, value2=32.3}
    Object1{a="15", b="YYY"}, Object2{value1=21.1, value2=24.3}
    Object1{a="16", b="AAA"}, Object2{value1=34.1, value2=45.3}
    Object1{a="15", b="BBB"}, Object2{value1=23.1, value2=65.3}
    Object1{a="15", b="DDD"}, Object2{value1=23.1, value2=67.3}
    Object1{a="17", b="CCC"}, Object2{value1=78.1, value2=2.3}
........
Run Code Online (Sandbox Code Playgroud)

我想在Object2列表中使用相同的a对此映射进行分组,如:

a="15", {{value1=12.1, value2=32.3}, {value1=21.1, value2=24.3}, {value1=23.1, value2=65.3}, {value1=23.1, value2=67.3}},
a="16", {{value1=34.1, value2=45.3}}
...
Run Code Online (Sandbox Code Playgroud)

我尝试这样的事情:

Map<String, …
Run Code Online (Sandbox Code Playgroud)

java java-8

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

Nrwl Nx:不同的版本号和库

我想使用Nrwl Nx(一个项目中有多个应用程序;https://nrwl.io/nx)启动Angular项目,但是我有两个问题:

  1. 如何为不同的应用程序指定不同的版本号?通常,我在中给出一个版本号package.json,但是使用Nx时package.json,我所有的应用程序都只有一个。我应该把它放在环境文件中吗?还是在.angular-cli.json文件中?

  2. 我读到:“升级到lib需要更改所有实现者。” 是否有解决方案(绕过)在不同的应用程序中使用不同版本的lib或NPM软件包?只有一个node_modules,但这对我的应用程序至关重要。

如您所知,Nx项目的结构如下所示:

apps
    app1
    app2
libs
    lib1
    lib2
node_modules
package.json
.angular-cli.json
...
Run Code Online (Sandbox Code Playgroud)

也许这两个问题都是基于观点的(我不太确定那个问题),但是关于Nrwl Nx的文章很少,答案也可以帮助其他人。谢谢。

angular-cli angular nrwl

5
推荐指数
2
解决办法
1007
查看次数