Slide 55
Slide 55 text
export function signalSetFn(node: SignalNode, newValue: T) {
if (!producerUpdatesAllowed()) {
throwInvalidWriteToSignalError();
}
if (!node.equal(node.value, newValue)) {
node.value = newValue;
signalValueChanged(node);
}
}
1
2
3
4
5
6
7
8
9
10
11
// ...
12
13
function signalValueChanged(node: SignalNode): void {
14
node.version++;
15
producerIncrementEpoch();
16
producerNotifyConsumers(node);
17
postSignalSetFn?.();
18
}
19
function signalValueChanged(node: SignalNode): void {
node.version++;
producerIncrementEpoch();
producerNotifyConsumers(node);
postSignalSetFn?.();
}
export function signalSetFn(node: SignalNode, newValue: T) {
1
if (!producerUpdatesAllowed()) {
2
throwInvalidWriteToSignalError();
3
}
4
5
if (!node.equal(node.value, newValue)) {
6
node.value = newValue;
7
signalValueChanged(node);
8
}
9
}
10
11
// ...
12
13
14
15
16
17
18
19
if (!node.equal(node.value, newValue)) {
node.value = newValue;
signalValueChanged(node);
}
export function signalSetFn(node: SignalNode, newValue: T) {
1
if (!producerUpdatesAllowed()) {
2
throwInvalidWriteToSignalError();
3
}
4
5
6
7
8
9
}
10
11
// ...
12
13
function signalValueChanged(node: SignalNode): void {
14
node.version++;
15
producerIncrementEpoch();
16
producerNotifyConsumers(node);
17
postSignalSetFn?.();
18
}
19
signalValueChanged(node);
function signalValueChanged(node: SignalNode): void {
node.version++;
producerIncrementEpoch();
producerNotifyConsumers(node);
postSignalSetFn?.();
}
export function signalSetFn(node: SignalNode, newValue: T) {
1
if (!producerUpdatesAllowed()) {
2
throwInvalidWriteToSignalError();
3
}
4
5
if (!node.equal(node.value, newValue)) {
6
node.value = newValue;
7
8
}
9
}
10
11
// ...
12
13
14
15
16
17
18
19
signalValueChanged(node);
node.version++;
export function signalSetFn(node: SignalNode, newValue: T) {
1
if (!producerUpdatesAllowed()) {
2
throwInvalidWriteToSignalError();
3
}
4
5
if (!node.equal(node.value, newValue)) {
6
node.value = newValue;
7
8
}
9
}
10
11
// ...
12
13
function signalValueChanged(node: SignalNode): void {
14
15
producerIncrementEpoch();
16
producerNotifyConsumers(node);
17
postSignalSetFn?.();
18
}
19
https://github.com/angular/angular/blob/1872fcd8e09fefb52f9b36e8261702cd6fb03f85/packages/core/primitives/signals/src/signal.ts