标签: subject

&和&和有什么区别?在HTML5中?

&和之间有什么区别&

就像下面的代码一样,两者的工作方式是否相同?

<a href="mailto:EMAIL?subject=BLABLABLA&body=http://URL, SHORT DESCRIPTION"></a>
<a href="mailto:EMAIL?subject=BLABLABLA&amp;body=http://URL, SHORT DESCRIPTION"></a>
Run Code Online (Sandbox Code Playgroud)

html mailto share subject href

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

使用Subject来解耦Observable订阅和初始化

我有一个暴露IObservable状态的API .但是这种状态取决于必须通过初始化的潜在可观察源Init.

我想做的是保护用户不必按正确的顺序执行操作:就像目前的情况一样,如果他们Status在执行之前尝试订阅,则会Init因为源未初始化而获得异常.

所以我有一个天才的想法,用一个Subject来解耦这两个:订阅我的外部用户Status只是订阅主题,然后当他们调用时Init,我使用我的主题订阅底层服务.

代码中的想法

private ISubject<bool> _StatusSubject = new Subject<bool>();
public IObservable<bool> Status { get { return _StatusSubject; } }

public void Init() 
{
    _Connection = new Connection();
    Underlying.GetDeferredObservable(_Connection).Subscribe(_StatusSubject);
}
Run Code Online (Sandbox Code Playgroud)

但是,通过对虚拟项目的测试,问题是初始化通过订阅主题来"唤醒"我的基础Observable,即使没有人订阅该主题.如果可能的话,这是我想避免的,但我不确定如何......

(我也注意到所接受的智慧,"一般规则是,如果你正在使用一个主题,那么你做错了什么")

c# subject system.reactive

2
推荐指数
1
解决办法
1105
查看次数

在Observer Design模式中,Subject和Observable是同一个东西吗?

在观察者设计模式中,观察者观察主体和/或可观察者.观察者通过他们的更新得到通知.

我很困惑这两件事(主题和可观察的)是否基本相同?或者这两者之间有细微差别吗?

java design-patterns class subject observable

2
推荐指数
1
解决办法
790
查看次数

在 Angular 6 中从一个组件路由导航到另一个组件时,主题不起作用

我有组件 A、组件 B 和一项服务。我在服务中声明了 Subject 并订阅了组件 B. 中的主题,并且在导航到组件 B 之前,我将一些数据从组件 A 发送到主题。它正在导航到组件 B,但没有触发订阅方法。

服务:

@Injectable({
  providedIn: 'root'
})
export class ServiceTestService {
storage: Recipe;
recipeSelected = new Subject<any>();
constructor() { }

}
Run Code Online (Sandbox Code Playgroud)

组件 A向 observable 发送消息

@Component({
  selector: 'app-recipe-item',
  templateUrl: './recipe-item.component.html'
 })

export class RecipeItemComponent implements OnInit {

@Input() recipe: Recipe;

  constructor(
     private recipeService: ServiceTestService,
     private rt: Router) { }

  ngOnInit() {
  }

  onRecipeSelected(name: number) {

this.recipeService.recipeSelected.next(this.recipe);
this.rt.navigate(['/recipe', this.ind]);

  }
}
Run Code Online (Sandbox Code Playgroud)

组件 B: 这里我订阅了 Observable。

@Component({
  selector: 'app-recipe-detail',
  templateUrl: …
Run Code Online (Sandbox Code Playgroud)

subject angular

2
推荐指数
1
解决办法
1024
查看次数

Angular2:如何处理异步管道和条件样式?

我期待着为绿色或红色的一些异步接收数据着色,具体取决于它的值.

为了处理竞争条件,我使用了一个Subject,它广播一个包含我感兴趣的数据的Object.

我成功地做了我想做的事,但结果代码非常难看:

<span [ngClass]="{greenClass: isPositive((mySubject | async)?.fieldData), redClass: !isPositive((mySubject | async)?.fieldData)}"> {{(mySubject | async)?.fieldData | number:'1.0-1' }} </span>

有没有更好的方法来解决这个问题?我试图在ngClass中放置一个三元表达式,但它没有用.将代码移回我的控制器是不行的,因为它会立即创建十个变量.

subject angular-pipe angular

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

更改 Woocommerce 中某些特定电子邮件通知的电子邮件主题

我想标准化电子邮件主题的结构(对于所有 Woocommerce 电子邮件通知)。\n我正在使用这里所有可用的过滤器

\n\n

但是 \xe2\x80\x9cOnhold\xe2\x80\x9d、\xe2\x80\x9cCancelled\xe2\x80\x9d、\xe2\x80\x9cRefunded\xe2\x80\x9d 和 \xe2\x80\x9cFailed 订单又如何呢\xe2\x80\x9d 电子邮件主题?
\n有没有办法更改这些电子邮件的电子邮件主题?

\n

php wordpress subject email-notifications woocommerce

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

Rxjs Subject.asObservable() 不工作但 BehaviorSubject 工作......为什么?

我已经检查了这个https://github.com/angular/angular/issues/12129 但我没有看到任何解决方案......

Angular 2.0.1 AsyncPipe 不适用于 Rx Subject

这里的解决方法是在组件中创建一个可观察的变量

我有但仍然没有工作......不知道为什么它不起作用,如果我将我的主题切换UserStateService到 BehaviorSubject 一切正常......

注意:UserDataService 和 UsersStateService 都在根 app.module.ts 中提供。

user-data.service.ts -> 发出我在组件中调用的 http 请求

fetchUsers():void{
   this.httpClient.get<User[]>(this.apiUrl, {
  observe: 'body',
  responseType: 'json'
})
.subscribe( (response: User[])=>{
    this.usersStateService.setUsersList(response);  <-- set to local state service

  });

}
Run Code Online (Sandbox Code Playgroud)

用户状态.service.ts

userListState = new Subject<User[]>();   <-- Change this to BehaviorSubject<User[]>([])  everything works!

setUsersList(users: User[]):void {
  this.userListState.next(users.slice());
}

getUsersListState():Observable<User[]>{
   return this.userListState.asObservable();
}
Run Code Online (Sandbox Code Playgroud)

组件.ts

 users: Observable<User[]>;

 ngOnInit() {

 if(this.usersStateService.hasUserList()){

  this.users = this.usersStateService.getUsersListState();  -|
                                                             |
  // …
Run Code Online (Sandbox Code Playgroud)

subject rxjs behaviorsubject angular

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

主题在两个不相关的组件之间不起作用

我有两个组件,sourceComponent和targetComponent。我想要对sourceComponent中的按钮单击事件在targetComponent中执行一个功能。我决定为此使用Subject。

sourceComponent.ts

export class SourceComponent{
    constructor(private btnclk: ButtonClickService){}
       onButtonClick(){
           this.btnclk.updateButtonClick(event);
       }
}
Run Code Online (Sandbox Code Playgroud)

targetComponent.ts

export class TargetComponent{
    constructor(private btnclk: ButtonClickService){
        this.btnclk.getButtonClick().subscribe(event=>{
            console.log('Click from source component to target component') // not working
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

ButtonClickService.ts

@Injectable()
export class ButtonCLickService{
    private btnclk = new Subject<Event>();

    getButtonClick() : Observable<Event>{
        return this.btnclk.asObservable();
    }

    updateButtonClick(event : Event){
        this.btnclk.next(event);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在appComponent.ts中订阅相同的click事件时,它工作正常。

appComponenet.ts

export class AppComponent{
    constructor(private btnclk: ButtonClickService){
        this.btnclk.getButtonClick().subscribe(event=>{
          console.log('Click from source component to app component') //working
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

请解释为什么它在父组件和子组件之间起作用,而在两个不相关的组件之间不起作用。还请帮助我如何在两个不相关的组件之间进行这项工作。提前致谢

subject angular

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

如何将主题添加到使用Gmail发送的电子邮件中?

我正在尝试使用带有主题和消息的GMAIL发送电子邮件.我已成功使用GMAIL发送电子邮件而未执行,subject也已收到电子邮件.但是,每当我尝试添加主题时,该程序根本不起作用.

import smtplib
fromx = 'email@gmail.com'
to  = 'email1@gmail.com'
subject = 'subject' #Line that causes trouble
msg = 'example'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.ehlo()
server.login('email@gmail.com', 'password')
server.sendmail(fromx, to, subject , msg) #'subject'Causes trouble
server.quit()
Run Code Online (Sandbox Code Playgroud)

错误行:

server.sendmail(fromx, to, subject , msg) #'subject'Causes trouble
Run Code Online (Sandbox Code Playgroud)

python email gmail subject python-2.7

0
推荐指数
1
解决办法
2936
查看次数

订阅仅触发一次的主题

我创建了一个服务,以便从API获取数据并使用Subject从我的组件中获取这些数据(在应用程序初始化时调用LoadTenants):

服务 :

@Injectable()
 export class TenantService{
  public tenants;
  private tenantSubject = new Subject<any>();

constructor(private http: HttpClient) {
}

LoadTenants() {
    this.http.get(TENANT_URL).subscribe((data: any) => {
        this.tenants = data;
        this.setTenants();
    });
}

setTenants() {
    this.tenantSubject.next(this.tenants);
}

getTenants(): Observable<any> {
    return this.tenantSubject.asObservable();
}

getSyncTenants() {
    return this.tenants;
}
}
Run Code Online (Sandbox Code Playgroud)

组成部分:

public tenant;
subsciption: Subscription;

constructor(private tenantService: TenantService) { }

ngOnInit() {
        this.subsciption = this.tenantService.getTenants().subscribe((datas) => {
            this.tenant = datas;
        },
            error => console.log('Error : ', error)
        );
    }
}

ngOnDestroy() {
    this.subsciption.unsubscribe(); …
Run Code Online (Sandbox Code Playgroud)

subject rxjs angular

0
推荐指数
1
解决办法
577
查看次数

在数组类型的 RxJS 主题上调用 .next() 不会通知观察者

我正在构建一个过滤器,您可以在其中按类别过滤,您可以通过单击类别名称旁边的复选框来选择一个类别。

所以我有一个filterComponent,它包含它自己的过滤器,然后是一个filterService,它有一个类别属性Subject<Array<ICategory>>,这个属性用于将数据传递到productsComponent我订阅类别属性的位置。

当我想使用此模式传递一个简单的字符串时,此逻辑有效,但当我想传递对象数组时,它似乎不起作用。

在我的 filters.component.html 文件中,当复选框值发生变化时,我正在调用一个方法:

<li *ngFor="let category of categories">
        <mat-checkbox (change)="addOrRemoveCategory(category)" [(ngModel)]="category.isChecked">
                {{'category.' + category.Name | translate}}
        </mat-checkbox>
</li>
Run Code Online (Sandbox Code Playgroud)

addOrRemoveCategory 方法实现如下所示:

private addOrRemoveCategory(category: ICategory): void {
    if (!this.chosenCategories.includes(category)) {
        this.add(category);
    } else {
        this.remove(category);
    }
    this.filterService.categories.next(this.chosenCategories);
}
Run Code Online (Sandbox Code Playgroud)

所以无论一个类别发生了什么,被添加或删除,(我在内部修改了selectedCategories数组,我用它的值调用 .next() ),我用更新的数组调用 .next() 。

问题是,当selectedCategories数组为空时,我推送到它,并用它调用 .next() 时,我正确地获取了订阅者函数中的值,但是如果再次执行此操作,并且我有一个2 个元素数组,我调用 .next(this.chosenCategories),我的订阅者方法没有收到通知。

但是,一旦我使用空数组调用 .next() ,我的订阅者方法就会再次收到通知(因为我已经删除了之前选择的所有类别)。

订阅者方法:

this.categoriesChangeSubscription = this.filterService.categories
            .pipe(
                debounceTime(500),
                distinctUntilChanged()
            )
            .subscribe((categories: Array<ICategory>) => { …
Run Code Online (Sandbox Code Playgroud)

subject observers rxjs subject-observer angular

0
推荐指数
1
解决办法
246
查看次数