我有一个对象数组(让我们称之为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 = [];
我想NgZone和markForCheck()太.
我正在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类),即使它不是必需的.
这是一个正确的行为吗?我能做什么?
如何在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) 在我当前的注销呼叫中,我有这样的事情:
getLogoutConfirmation(){
// get confirmation in modal and perform logout
// redirect to login page
}
Run Code Online (Sandbox Code Playgroud)
问题是,当执行注销并调用重定向到登录时,会在该路由上调用 canDeactivate 防护,但用户已经注销。
那么如何在执行注销之前调用 canDeactivate 守卫并在用户不想离开时取消注销操作。
谢谢。
我已经创建了一个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)
我的问题是我尝试了这两件事,但我认为它们都是丑陋或糟糕的:
我把一切都对我GIT回购(我删除dist从.gitignore),但经过npm install和npm start我得到一个模块没有发现错误.我认为这甚至不起作用,因为包在子文件夹中dist(我从中导入我的模块node_modules/mypackage/dist).另一个问题是,当我安装软件包时,我的源文件也存在,这不是最好的.
我只将dist文件夹推送到GIT仓库.然后我可以在另一个项目中轻松安装它,它可以工作,没有错误.但我的问题是我应该把我的代码推到其他地方.有了这个,我必须有2个GIT回购.一个用于我的实际代码,一个用于包(dist文件夹).
我知道必须有某种更好的解决方案.我读了很多文章,但我一无所获.
谁能为此提出一个好的解决方案?或者我应该选择第二个?
我习惯在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)
知道为什么吗?谢谢!
我想在我的 app.module 中声明变量并从子组件访问它,
而无需再次声明或使用全局注入。
这可能吗?
我想在加载元素时调用带有参数的函数。就像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) 我有两个对象.第一个:
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) 我想使用Nrwl Nx(一个项目中有多个应用程序;https://nrwl.io/nx)启动Angular项目,但是我有两个问题:
如何为不同的应用程序指定不同的版本号?通常,我在中给出一个版本号package.json,但是使用Nx时package.json,我所有的应用程序都只有一个。我应该把它放在环境文件中吗?还是在.angular-cli.json文件中?
我读到:“升级到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 ×9
javascript ×2
angular-cli ×1
forms ×1
git ×1
java ×1
java-8 ×1
npm ×1
npm-install ×1
nrwl ×1
rxjs ×1
typescript ×1
validation ×1