⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

Conversation

@PieterjanDeClippel
Copy link

Summary

This PR adds support for Angular 17.1+ signal-based inputs and outputs in mock components.

Files Created:

  • libs/ng-mocks/src/lib/common/decorate.signal-inputs.ts - Handles decoration of signal inputs on mock components
  • libs/ng-mocks/src/lib/common/decorate.signal-outputs.ts - Handles decoration of signal outputs on mock components
  • tests/signal-inputs-outputs/test.spec.ts - Test file for signal inputs/outputs

Files Modified:

  • libs/ng-mocks/src/lib/common/core.types.ts - Added SignalInputDef and SignalOutputDef types
  • libs/ng-mocks/src/lib/resolve/collect-declarations.ts - Added parsing of signal inputs/outputs from Angular's internal ɵcmp/ɵdir metadata
  • libs/ng-mocks/src/lib/mock/decorate-declaration.ts - Added calls to decorate signal inputs/outputs

How it works:

  1. Detection: The code parses Angular's internal component/directive definitions (ɵcmp, ɵdir) to find signal inputs/outputs which have isSignal: true in their metadata
  2. Signal Inputs: Creates writable signals on the mock prototype so tests can both read and write values
  3. Signal Outputs: Creates mock OutputRef objects that support subscribe() and emit() methods for testing

Usage in tests:

// For signal inputs - the mock will have writable signals
const mockChild = ngMocks.findInstance(SignalChildComponent);
mockChild.signalInput.set('new value'); // Set signal input value

// For signal outputs - the mock has emit() method
mockChild.signalOutput.emit('test value'); // Emit from output

The implementation maintains backward compatibility - it only activates for components that use signal inputs/outputs (Angular 17.1+).


Split from PR #12594 which combines both Angular 21 upgrade and signal support

🤖 Generated with Claude Code

Adds support for Angular 17.1+ signal-based inputs and outputs in mock components.

Files Created:
- libs/ng-mocks/src/lib/common/decorate.signal-inputs.ts - Handles decoration of signal inputs on mock components
- libs/ng-mocks/src/lib/common/decorate.signal-outputs.ts - Handles decoration of signal outputs on mock components
- tests/signal-inputs-outputs/test.spec.ts - Test file for signal inputs/outputs

Files Modified:
- libs/ng-mocks/src/lib/common/core.types.ts - Added SignalInputDef and SignalOutputDef types
- libs/ng-mocks/src/lib/resolve/collect-declarations.ts - Added parsing of signal inputs/outputs from Angular's internal metadata
- libs/ng-mocks/src/lib/mock/decorate-declaration.ts - Added calls to decorate signal inputs/outputs
- Convert CRLF to LF line endings
- Remove unused variable in test file

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant