Angular: 나만의 상황에 맞는 메뉴 만들기
4008 단어 angulartablecontextmenubeginners
모든 개발자는 어떻게든 html 테이블을 사용하여 레코드를 표시하고 편집, 보기 또는 다운로드 및 목록 진행과 같은 작업 버튼을 사용했을 수 있으며 모든 사람이 이러한 버튼이 너무 많은 공간을 차지한다고 느꼈을 것입니다.
솔루션 상황에 맞는 메뉴가 있습니다.
버튼 대신 상황에 맞는 메뉴를 가질 수 있으며 UI 디자인을 방해하지 않고 수행할 작업을 최대한 많이 가질 수 있습니다.
컨텍스트 메뉴를 사용하면 그리드에 다른 정보를 표시할 수 있는 공간이 더 넓어지고 사용자가 마우스 오른쪽 버튼을 클릭하여 작업 항목을 쉽게 가져올 수도 있습니다.
위의 상황에 맞는 메뉴를 달성하기 위한 단계는 다음과 같습니다.
<div id="contextmenu" class="contextmenu" [ngStyle]="rightPanelStyle"
(clickOutside)="closeContextMenu()" (mouseleave)="closeContextMenu()">
<ul class="menu">
<li (click)="edit()"><a><i class="fa fa-eye"></i> View</a></li>
<li class="activem"><a><i class="fa fa-pencil-square-o"></i> Edit</a></li>
<li><a><i class="fa fa-download"></i> Download</a></li>
<li (click)="delete()"><a><i class="fa fa-trash"></i> Delete</a></li>
</ul>
</div>
컨텍스트 메뉴처럼 보이게 하는 CSS.
.menu {
display: flex;
flex-direction: column;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 10px 20px rgb(64 64 64 / 5%);
padding: 10px 0;
}
.menu > li > a {
cursor: pointer;
font: inherit;
border: 0;
padding: 10px 30px 10px 15px;
width: 100%;
display: flex;
align-items: center;
position: relative;
text-decoration: unset;
color: #000;
font-weight: 500;
transition: 0.5s linear;
-webkit-transition: 0.5s linear;
-moz-transition: 0.5s linear;
-ms-transition: 0.5s linear;
-o-transition: 0.5s linear;
}
.menu > li > a:hover {
background:#b1b3b6;
color: #4b00ff;
}
.menu > li > a > i {
padding-right: 10px;
}
.menu > li.trash > a:hover {
background:#b1b3b6;
}
.ts 파일에 필요한 코드
rightPanelStyle: any = {};
detectRightMouseClick($event,user) {
if ($event.which === 3) {
this.rightPanelStyle = { 'display': 'block', 'position': 'absolute', 'left.px': $event.clientX, 'top.px': $event.clientY };
this.currentRecord = user;
return false;
}
return true;
}
closeContextMenu() {
this.rightPanelStyle = { 'display': 'none' };
}
그런 다음 마지막으로 테이블의 td에서 아래와 같이 detectRightMouseClick 함수를 호출해야 합니다.
<td (mouseup)="detectRightMouseClick($event,item)">{{item.name}}</td>
여기서 항목은 함수에 전달하는 ngFor 인스턴스이며 $event를 사용하면 마우스 클릭 위치를 위쪽과 왼쪽으로 가져오는 JavaScript 이벤트가 발생합니다.
브라우저 오른쪽 클릭을 비활성화하고 싶을 수도 있습니다.
그렇지 않으면 두 개의 상황에 맞는 메뉴가 있습니다. 이것을 테이블의 상위 div에 추가할 수 있습니다.
<div oncontextmenu="return false;">
로드할 때 컨텍스트 메뉴를 닫으려면 ngOnInit에서 closeContextMenu를 호출해야 합니다.
몇 가지 새로운 것을 배웠기를 바랍니다.
처음부터 코드를 작성하고 생각하는 과정을 확인해야 하는 경우 YouTube 동영상을 시청하세요.
youTube Link
그리고 이렇게 놀라운 생명을 구하는 게시물로 저에게 댓글을 남겨주세요....
Reference
이 문제에 관하여(Angular: 나만의 상황에 맞는 메뉴 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chetan_void/angular-build-your-own-context-menu-18ma텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)