我有一个组件,我需要检测用户是否在他的浏览器中按下了按钮以导航回来.
目前我正在订阅路由器事件.
constructor(private router: Router, private activatedRoute: ActivatedRoute) {
this.routerSubscription = router.events
.subscribe(event => {
// if (event.navigatesBack()) ...
});
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用,window.onpopstate
但在使用Angular2时感觉就像是黑客.
我正在尝试在构建期间在docker容器中设置环境变量但没有成功.使用run命令时设置它们有效但我需要在构建期间设置它们.
Dockerfile
FROM ubuntu:latest
ARG TEST_ENV=something
Run Code Online (Sandbox Code Playgroud)
命令我正在使用构建
docker build -t --build-arg TEST_ENV="test" myimage .
Run Code Online (Sandbox Code Playgroud)
运行
docker run -dit myimage
Run Code Online (Sandbox Code Playgroud)
我正在使用检查可用的环境变量
docker exec containerid printenv
Run Code Online (Sandbox Code Playgroud)
结果是
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root
Run Code Online (Sandbox Code Playgroud)
TEST_ENV不存在
angular2如何建议渲染
<div *ngFor="let todo of unfinishedTodos">
{{todo.title}}
</div>
Run Code Online (Sandbox Code Playgroud)
万一如果 unfinishedTodos.length >0
在另一种情况下,文本"为空".
PS
<div *ngIf="unfinishedTodos && unfinishedTodos.length > 0">
<div *ngFor="let todo of unfinishedTodos">
{{todo.title}}
</div>
</div>
<div *ngIf="!unfinishedTodos || unfinishedTodos.length <= 0">
empty
</div>
Run Code Online (Sandbox Code Playgroud)
看起来很难看
我有一个具有子对象和数组等的复杂对象。
我可以轻松地从此对象创建Subject / BehaviourSubject或Observable,以便可以将新状态“下一步”(发射)给订阅者。
[例如:let appEnv$ = new Rx.BehaviorSubject<IWebSocketAppEnv>(appEnv);
]
但是,我不希望每次对象更改时都通知我的所有订户。例如,对于我的一个订户,我只想在该对象的数组的元素上发生更改时得到通知。
其实我想要的是redux已经在做的事情。在redux中,我可以订阅商店,但只能选择一个子元素。
我想为后端Websocket服务器应用程序实现相同的基础结构。
如何使用RxJS实现呢?