У меня есть сигналы в службе, я хочу выставить эти сигналы компонентам (без использования Getter)Html

Программисты Html
Ответить
Anonymous
 У меня есть сигналы в службе, я хочу выставить эти сигналы компонентам (без использования Getter)

Сообщение Anonymous »

У меня есть этот сценарий, мой сервис содержит мало сигналов (они используются с помощью ресурса API для реактивного получения данных, а также показывают на уровне пользовательского интерфейса)
Мое требование - это что я хочу познакомить эти значения пользователю в компоненте HTML. < /p>
Мои проблемы: < /p>

Я обычно использую Getter и Setter, чтобы предоставить эти свойства из сервиса (Private - не доступен в HTML). < /P>
< /li>
Я не Хочу использовать вычисленную здесь, потому что фактических вычислений не происходит, мне просто нужна ссылка на сигнал сервиса, этот сценарий определенно не классифицируется как производное состояние, это просто ссылка на сигнал из сервиса . < /p>
< /li>
Я не хочу публиковать свою услугу, я хочу разоблачить только определенные элементы, я бы сохранил дополнительные элементы как частные, Но использование службы в HTML не является для меня вариантом. : < /p>
Сервис: < /h3>

Код: Выделить всё

@Injectable({
providedIn: 'root',
})
export class SomeService {
http = inject(HttpClient);
serviceIdSignal: WritableSignal = signal(0);

rxResource = rxResource({
request: () => this.serviceIdSignal(),
loader: ({ request: id }) => {
return this.http.get(`https://jsonplaceholder.typicode.com/todos/${id}`);
},
});

resource = resource({
request: () => this.serviceIdSignal(),
loader: ({ request: id, abortSignal }) => {
return fetch(`https://jsonplaceholder.typicode.com/todos/${id}`, {
signal: abortSignal,
}).then((r) => r.json());
},
});
}
< /code>
 Компонент: < /h3>
@Component({
selector: 'app-root',
imports: [JsonPipe],
template: `

{{someService.serviceIdSignal()}}

@if(someService.rxResource.status() === rs.Resolved) {
{{someService.rxResource.value() | json}}
} @else {
Loading...
}

@if(someService.rxResource.status() === rs.Resolved) {
{{someService.resource.value() | json}}
} @else {
Loading...
}
`,
})
export class App {
rs = ResourceStatus;
private someService = inject(SomeService);
}
< /code>
ниже приведена ошибка, которую я получаю: < /p>

✘ [error] ng1: свойство 'someService' является частным и Только доступный
в приложении класса '. [Плагин угловой компилятор] < /p>
src/main.ts:56:12:
56 │           {{someService.resource.value() | json}}
╵             ~~~~~~~~~~~
demo

Подробнее здесь: https://stackoverflow.com/questions/794 ... onents-wit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»