Repository: angular
Issue: A signal with BehaviorSubject prop is possible
Labels: area: core,cross-cutting: signals

### Which @angular/* package(s) are relevant/related to the feature request?

_No response_

### Description

I have a scenario which is such that I use inside the .ts file observables actually they are BehaviorSubjects. I believe the difference between those two are pretty minor, I'm writing my code in such a way that my pipe always outputs BehaviorSubjects.

I still want to keep that approach cause its async what I do and I benefit from the pipeline operators from RxJS. However I do see the potential long term which Signals will bring to the table.

### Proposed solution

What I would like to do is have beside the model signal also the observable version or better said the BehaviorSubject version cause that one is the closest to the signal. This would have the benefit then that we could still code RxJS inside the ts file while it would still be possible to use the new API.

Imagine we have the following function which adds to our signal the BehaviorSubject reference (almost same as toObservable function):
```ts
interface ICustomSignal<T> extends ModelSignal<T>
{
    obs$: BehaviorSubject<T>;
}
export function toCustomSignal<T>(source: ModelSignal<T>, options?: ToObservableOptions): ICustomSignal<T> {
    !options?.injector && assertInInjectionContext(toCustomSignal);
    const injector = options?.injector ?? inject(Injector);
    let castedSource = source as ICustomSignal<T>

    if(castedSource.obs$)
        return castedSource;
    
    const subject = new BehaviorSubject<T>(source());
    castedSource.obs$ = subject;
    
    let subscription = subject.subscribe(x => {
        if (source() == x)
            return;
        source.set(x);
    });

    const watcher = effect(
        () => {
            let value: T;
            try {
                value = source();
            } catch (err) {
                untracked(() => subject.error(err));
                return;
            }
            untracked(() => subject.next(value));
        },
        { injector, manualCleanup: true },
    );

    injector.get(DestroyRef).onDestroy(() => {
        subscription.unsubscribe();
        watcher.destroy();
        subject.complete();
    });

    return castedSource;
}
```

Then inside the component:
```ts
someInput = model<string>('LOADING');
someInputExtended = toCustomSignal(this.someInput);
```

### Alternatives considered

I wonder if you would support such things, cause personally I don't see myself going away from RxJS. Or are the people using RxJS will never truly be first-class citizens in Angular?

Besides, I would personally be more happy if you would not force me to write 2 lines of code, right now this is not possible:
```ts
someInput= toCustomSignal(model<string>('LOADING'));
```
<img width="700" alt="image" src="https://github.com/angular/angular/assets/35216938/6e035097-2877-40f7-a581-0f51a5b6ab22">

Maybe we could have simply a flag which enables this functionality, or the RxJS part provides a signal which is also having the BehaviorSubject part.