我试图围绕着可观察者.我喜欢observables解决开发和可读性问题的方式.在我读到的时候,好处是巨大的.
关于HTTP和集合的可观察量似乎是直截了当的.我怎样才能将这样的东西转换为可观察的模式.
这是来自我的服务组件,用于提供身份验证.我希望它能像Angular2中的其他HTTP服务一样工作 - 支持数据,错误和完成处理程序.
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(function(firebaseUser) {
// do something to update your UI component
// pass user object to UI component
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Run Code Online (Sandbox Code Playgroud)
这里的任何帮助将不胜感激.我唯一的替代解决方案是创建EventEmitters.但我想这是在服务部门做事的一种可怕方式
我有一个带有单个按钮的简单组件,该按钮可以启动和暂停由RxJS计时器生成的数字流。
import { Component, OnInit } from '@angular/core';
import { BehaviorSubject, Observable, timer, merge } from 'rxjs';
import { filter, bufferToggle, windowToggle, mergeMap, mergeAll, share } from 'rxjs/operators';
@Component({
selector: 'my-app',
template: `<button (click)="toggle()">{{ (active$ | async) ? 'Pause' : 'Play' }}</button>`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
active$ = new BehaviorSubject<boolean>(true);
ngOnInit(): void {
const on$ = this.active$.pipe(filter(v => v));
const off$ = this.active$.pipe(filter(v => !v));
const stream$ = timer(500, 500).pipe(share());
const out$ = …Run Code Online (Sandbox Code Playgroud) 我玩了angular2并且在一段时间后卡住了.
使用http.get对于单个请求工作正常,但我想每4秒轮询一次实时数据,经过一段时间的修补并阅读了很多反应性的东西后我最终得到:
Observable.timer(0,4000)
.flatMap(
() => this._http.get(this._url)
.share()
.map(this.extractData)
.catch(this.handleError)
)
.share();
Run Code Online (Sandbox Code Playgroud)
在-observable发出请求结果后,是否有一种简单的方法可以启动(4秒)间隔http.get?(或者我最终会在可观察到的地狱?)
我想要的时间表:
Time(s): 0 - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - 5 - - - - - 6
Action: Request - - Response - - - - - - - - - - - - - - - …Run Code Online (Sandbox Code Playgroud) 所以我试图设置ag-grid,我不能让一件事情起作用.我希望有一个列是行动.然后我希望它有一个链接或按钮触发组件ts文件中的方法.
对于列def,我有以下内容.我究竟做错了什么?
{
headerName: 'Actions',
cellRenderer: params => {
return `<a (click)="onEditClick("${params.data.hostname}")">Edit</a>`;
}
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了油门时间文档,但我没有完全了解操作员。
我知道如何throttleTime(1000)运作。事件到达后,它将跳过所有后续事件 1 秒,然后再次开始此过程。
我难以理解的是究竟是如何ThrottleConfig工作的,这是操作符的第三个参数。
throttleTime<T>(
duration: number,
scheduler: SchedulerLike = async,
config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction<T>
Run Code Online (Sandbox Code Playgroud)
leading和trailing属性如何改变源 Observable 的功能?
我已经阅读了很多文档,但他们没有清楚地解释这一点。
所以有四种选择:
{ leading: true, trailing: false }:{ leading: false, trailing: true }:{ leading: false, trailing: false }:{ leading: true, trailing: true }:我有两个普通表和一个关系表。
--------------------------------------------------
| Group | Membership | User |
| (ID, NAME) |(GRP_ID, U_ID) |(ID, FORENAME) |
--------------------------------------------------
| 1, Admin | 1, 1 | 1, Joe |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
成员有两个外键
FK1 Membership.GRP_ID -> Group.ID
FK2 Membership.U_ID -> User.ID
Run Code Online (Sandbox Code Playgroud)
我可以设置cascade-delete每个外键(FK1和FK2)。
如果既不删除FK1也不FK2删除级联,则我也无法删除Admin或Joe,因为它们保持“成员身份”连接。
--------------------------------------------------
| Group | Membership | User |
| (ID, NAME) |(GRP_ID, U_ID) |(ID, FORENAME) |
--------------------------------------------------
| 1, Admin | 1, 1 | 1, Joe |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我已经找到了可能的解决方案,该解决方案在https://dzone.com/articles/using-markdown-syntax-javadoc中进行了描述,该解决方案基于https://github.com/Abnaxos/pegdown-doclet。这使得markdown支持可以替代用Javadoc编写丑陋的HTML标签。
在GitHub页面上,还有一个“ markdown-compatible-tooltip”解决方案作为使用IntelliJ中的CTRL + Q工具提示的插件,效果很好,达到50%。
仅举一个例子,Javadoc当前的外观:
/**
* This enum gives you insight for various person characteristics.
* <p>
* This could be the following:
* <ul>
* <li>introvert</li>
* <li>extrovert</li>
* </ul>
*/
public enum PersonTypes {
...
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您将工具提示/鼠标悬停在IDE中的类上就可以了。但是,由于HTML标记和其他宏的原因,如果您直接位于相关类中,则很难阅读。这只是一个非常简单的示例,没有任何Javadoc特定的宏。
因此,如上文网站所述,我想直接用源代码中的Markdown语法替换Javadoc内容。应用于示例,这看起来像:
/**
* This enum gives you insight for various person characteristics.
*
* This could be the following:
*
* - introvert
* - extrovert
*
*/
public enum PersonTypes {
...
}
Run Code Online (Sandbox Code Playgroud)
PersonTypes …
我正在尝试编写一个通用函数,它接受一个array: T[]和一个选择器K并返回一个Record<T[K], T>将数组中的每个元素从其属性之一映射到其自身的函数。
例如
const input1 = [{ name: "Alice" }, { name: "Bob" }];
const output1: Record<string, { name: string }> = toRecord(input1, "name");
// { Alice: { name: "Alice" }, Bob: { name: "Bob" } }
// -----------------------------------------------------------------
enum Name {
Alice = "Alice",
Bob = "Bob"
}
const input2 = [{ name: Name.Alice }, { name: Name.Bob }];
const output2: Record<Name, { name: Name }> = toRecord(input2, "name");
// { Alice: …Run Code Online (Sandbox Code Playgroud) 所以我通常会这样写我的http请求
服务
getData(){
return this.http.get('url')
}
Run Code Online (Sandbox Code Playgroud)
零件
getTheData() {
this.service.getData().subscribe(
(res) => {
//Do something
},
(err) => {
console.log('getData has thrown and error of', err)
})
Run Code Online (Sandbox Code Playgroud)
但是浏览Angular文档后,他们似乎在Service中将其格式化为
getHeroes(): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
catchError(this.handleError('getHeroes', []))
);
}
Run Code Online (Sandbox Code Playgroud)
这隐含的上行空间是什么,因为它对我来说似乎很冗长,而且我个人从不需要解决错误。
是否可以向NavigationExtras路由器提供全局?
skipLocationChange每当我导航到我的应用程序中的不同页面时,我都必须使用。我目前在模板中添加此选项:
<a routerLink="settings" skipLocationChange>Settings</a>
Run Code Online (Sandbox Code Playgroud)
或在组件中:
this.router.navigate(['settings'], { skipLocationChange: true });
Run Code Online (Sandbox Code Playgroud)
我能否以某种方式定义由 AngularNavigationExtras自动添加到所有navigate操作的全局默认值,以便我不必手动将它们添加到模板中的每个链接或router.navigate(..)组件中的每个调用?
angular ×6
rxjs ×5
javascript ×3
typescript ×3
java ×2
ag-grid ×1
eclipse ×1
firebase ×1
generics ×1
hibernate ×1
javadoc ×1
many-to-many ×1
markdown ×1
observable ×1
reactivex ×1
rxjs6 ×1