mirror of https://github.com/abpframework/abp.git
4 changed files with 102 additions and 0 deletions
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 228 KiB |
@ -0,0 +1,98 @@ |
|||
# Lookup Components |
|||
|
|||
The Angular UI of ABP Commercial introduces some components with `abp-lookup-...` selector prefix. These components are used for retrieving relational entity data. |
|||
|
|||
## Setup |
|||
|
|||
The components are in the _@volo/abp.commercial.ng.ui_ package, which is included in the ABP templates. So, as long as your project is a product of these templates and unless you delete the package, you have access to the lookup components. Here is how you import them in your Angular module: |
|||
|
|||
```javascript |
|||
import { CommercialUiModule } from '@volo/abp.commercial.ng.ui'; |
|||
|
|||
@NgModule({ |
|||
imports: [ |
|||
// other imports |
|||
CommercialUiModule, |
|||
], |
|||
// rest of the module metadata |
|||
}) |
|||
export class YourModule {} |
|||
``` |
|||
|
|||
Now you can use the lookup components in your components declared by this module. |
|||
|
|||
## Lookup HTTP Requests |
|||
|
|||
The lookup requests are used by all lookup components to get the related entity records. Because of lexical this, _they must be arrow functions_. |
|||
|
|||
```javascript |
|||
@Injectable({ |
|||
providedIn: 'root' |
|||
}) |
|||
export class AuthorService { |
|||
getCountryLookup = (input: LookupRequestDto) => |
|||
this.restService.request<any, PagedResultDto<LookupDto<string>>>({ |
|||
method: 'GET', |
|||
url: '/api/app/authors/country-lookup', |
|||
params: { filter: input.filter, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, |
|||
}, |
|||
{ apiName: this.apiName }); |
|||
|
|||
// rest of the service is removed for brevity |
|||
} |
|||
``` |
|||
|
|||
## Lookup Typeahead Component |
|||
|
|||
Typeahead is a good choice when you have an unknown number of records for the related entity or you want to improve the UX with a search ability. Although not the best scenario, the country picker below shows how the lookup typeahead works: |
|||
|
|||
 |
|||
|
|||
Here is how it is used in the template. |
|||
|
|||
```html |
|||
<abp-lookup-typeahead |
|||
cid="author-country-id" |
|||
formControlName="countryId" |
|||
displayNameProp="name" |
|||
[editingData]="selected?.country" |
|||
[getFn]="service.getCountryLookup" |
|||
></abp-lookup-typeahead> |
|||
``` |
|||
|
|||
The available properties are as follows: |
|||
|
|||
- **cid:** The id of the form control (e.g. an input or a select element) inside the lookup component. Lets form controls respond to `<label>` events. |
|||
- **editingData:** The related entity data if a record is being updated. |
|||
- **displayNameProp:** The property of the updated record to use as a display name in the form control. |
|||
- **lookupNameProp:** The property of the entity to use as a display name in options. Should macth the lookup HTTP request interface. _(default: displayName)_ |
|||
- **lookupIdProp:** The property of the entity to use as the unique key in options. Should macth the lookup HTTP request interface. _(default: id)_ |
|||
- **maxResultCount:** The maximum number of options to display. _(default: 10)_ |
|||
- **getFn:** A function to get the related entity records with HTTP requests. Because of lexical this, _it must be a an arrow function_. |
|||
- **disabled:** This property lets you disable/enable a lookup component. _(default: false)_. |
|||
|
|||
## Lookup Select Component |
|||
|
|||
Select is a good choice when you have a low (and usually fixed) number of records for the related entity and search is not necessary. The country picker below shows how the lookup select works: |
|||
|
|||
 |
|||
|
|||
Here is how it is used in the template. |
|||
|
|||
```html |
|||
<abp-lookup-select |
|||
cid="author-country-id" |
|||
formControlName="countryId" |
|||
displayNameProp="name" |
|||
[getFn]="service.getCountryLookup" |
|||
></abp-lookup-select> |
|||
``` |
|||
|
|||
The available properties are as follows: |
|||
|
|||
- **cid:** The id of the form control (e.g. an input or a select element) inside the lookup component. Lets form controls respond to `<label>` events. |
|||
- **displayNameProp:** The property of the updated record to use as a display name in the form control. |
|||
- **lookupNameProp:** The property of the entity to use as a display name in options. Should macth the lookup HTTP request interface. _(default: displayName)_ |
|||
- **lookupIdProp:** The property of the entity to use as the unique key in options. Should macth the lookup HTTP request interface. _(default: id)_ |
|||
- **getFn:** A function to get the related entity records with HTTP requests. Because of lexical this, _it must be a an arrow function_. |
|||
- **disabled:** This property lets you disable/enable a lookup component. _(default: false)_. |
|||
Loading…
Reference in new issue